2011-08-05 3 views
0

私はいくつかのコンボボックス、数値アップダウンコントロール、チェックボックスを含むWinFormsアプリケーションを持っています。また、いくつかのプロパティを公開するデータクラスがあり、これらのコントロールはそれらのプロパティにバインドされています。これらのプロパティのそれぞれのデフォルト値を復元し、変更を反映するためにすべてのバインドされたコントロールを更新する必要があります。たとえば、私のcomboBoxコントロールの1つは、(赤、青、黄、緑)を含む列挙体にバインドされています。このプロパティのデフォルト値は、データクラスのコンストラクタで青に設定されています。私のアプリケーションが起動すると、このプロパティにバインドされているコンボボックスはデフォルトの選択項目としてBlueを正しく表示します。ユーザーが別の色を選択して元の色に戻すことを決めた場合は、プロパティ値をBlueに戻して、バインドされたコントロールを表示する方法が必要です。私はコードでプロパティ値を設定することができますが、問題は私のコンボボックスが変更を反映するように更新されないということです。私はデータクラスに実装する必要のある変更通知メカニズムがあると思っていますが、それが何であるかはわかりません。どんなアイデアも高く評価されます。どうもありがとう!WinForms - コードでプロパティ値を設定し、バウンドコントロールを更新する方法

答えて

1

あなたのようなあなたのデータクラスにINotifyProperyChangedを実装する必要があります:

public class Coloring : INotifyPropertyChanged 
{ 
    private string _name; 
    public string Name 
    { 
     get { return _name; } 
     set 
     { 
      if (_name != value) { 
       _name = value; 
       OnPropertyChanged("Name"); 
      } 
     } 
    } 

    // Do this for all your properties 


    #region INotifyPropertyChanged Members 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void OnPropertyChanged(string propertyName) 
    { 
     var handler = PropertyChanged; 
     if (handler != null) { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    #endregion 
} 
+0

このアイデアをありがとうございました。それは私には新しいものですが、私は今それを理解しており、それは完全に機能しています。私はあなたの助けに感謝します! – user685869

0

BindingSourceを使用している場合は、そのResetBindingsメソッドを呼び出すことができます。

myBindingSource.ResetBindings(false); 
+0

が提案いただきありがとうございます!私はこれをもっと使います。 – user685869

関連する問題