7

ComboBox をデータ ソースにバインドしていますが、コントロールがフォーカスを失うまでバインディングを更新しません。選択した項目が変更されたときにバインディングを更新するにはどうすればよいですか? 以下のスクリーン ショットでは、ラベルをすぐに更新して、新しい選択を反映させたいと考えています。

いくつかのコード:

public enum MyEnum
{
  First,
  Second
}

public class MyData
{
  public String Name { get; set; }
  public MyEnum MyEnum { get; set; }
}  

サンプルフォーム:

public SampleForm()
{
  InitializeComponent ();   
  MyData data = new MyData () { Name = "Single Item" };
  this.bindingSource1.DataSource = data;
  this.comboBox1.DataSource = Enum.GetValues (typeof (MyEnum));
  this.label2.DataBindings.Add ("Text", this.bindingSource1, "MyEnum", true, DataSourceUpdateMode.OnPropertyChanged);
  this.comboBox1.DataBindings.Add (new System.Windows.Forms.Binding ("SelectedItem", this.bindingSource1, "MyEnum", true));
  this.comboBox1.DataBindings.Add (new System.Windows.Forms.Binding ("SelectedValue", this.bindingSource1, "MyEnum", true));
}
4

2 に答える 2

10

SelectedItem バージョンをコメントアウトし、SelectedValue バインディングを次のように変更して UpdateMode を含めます。

this.comboBox1.DataBindings.Add(new Binding(
                                      "SelectedValue",
                                      this.bindingSource1,
                                      "MyEnum",
                                      true,
                                      DataSourceUpdateMode.OnPropertyChanged));
于 2013-10-23T22:01:21.937 に答える
4

LarsTech ソリューションは正しいです。デザイン モードでも実行できます。

  1. ComboBox のプロパティ (F4) -> DataBindings ノード -> 詳細設定

  1. 「SelectedValue」をクリックし、データ ソース更新モードを「OnPropertyChanged」に変更します。 ここに画像の説明を入力
于 2016-10-14T10:34:01.147 に答える