すべてのコントロールが異なるクラスのプロパティにデータバインドするフォームを作成していますが、コントロールを離れようとしてもフォーカスを失わないコントロールがあることがわかりました。たとえば、別のクラスのプロパティにデータバインドされた numericUpDown コントロールがあり、numericUpDown をクリックするとフォーカスが得られますが、コントロールの外側をクリックしてもフォーカスが失われません。フォーム上の他のコントロールにアクセスできず、フォームを終了できません。右上隅の X ボタンは単に何もせず、numericUpDown にはまだフォーカスがあります。
何が起こっているのかを正確に確認するためにデバッグを試みたところ、コントロールを離れようとすると、「Leave」イベントが呼び出され、データバインドされた値が更新されましたが、その直後に「Enter」イベントが呼び出されました。
これが、私が話していた numericUpDown のデータバインドのコードです。numericUpDown は「Major_Tick_Number」という名前で、Dial.Representation のプロパティ MajorTicks にバインドされています。
Major_Tick_Number.DataBindings.Add("Value", theDial.Representation, "MajorTicks");
そして、これがそのためのデザイナーコードです:
this.Major_Tick_Number.Location = new System.Drawing.Point(195, 17);
this.Major_Tick_Number.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.Major_Tick_Number.Name = "Major_Tick_Number";
this.Major_Tick_Number.Size = new System.Drawing.Size(46, 20);
this.Major_Tick_Number.TabIndex = 63;
this.Major_Tick_Number.Value = new decimal(new int[] {
10,
0,
0,
0});
繰り返しになりますが、値が更新されているという意味ではデータバインドは正常に機能しますが、コントロールは単にフォーカスを失うことはありません。
データバインドを削除すると、コントロールは正常にフォーカスを取得したり失ったりします。
注意したいこと: Visual Studio 2008 を使用しており、C# でプログラミングしています。また、私のフォームには tabControl があり、他のすべてのコントロールは tabControl にありますが、それが問題かどうかはわかりません。また、一部のコントロール (おそらく 25%) は正常に動作しており、一部にはフォーカスの問題があることを強調したいと思います。コントロールが機能するパターンと機能しないパターンは実際にはわかりません。
さらに情報が必要な場合はお知らせください。あなたが提供できるどんな助け、提案も大歓迎です。
ありがとうございました。
データバインド先のプロパティは次のとおりです
public float MajorTicks {
get { return otherObject.getMajorTicks(); }
set { otherObject.setMajorTicks(value); }
}
および otherObject (マネージ C++ で記述)
float getMajorTicks() {return majorTicks;};
void setMajorTicks(float val) {majorTicks = val;};