2013-10-23 1 views
6

Ho un ComboBox associato a un'origine dati ma non aggiornerà i binding finché il controllo non perde il focus. Come posso aggiornare i binding quando cambiano gli elementi selezionati? Nella schermata qui sotto vorrei che l'etichetta si aggiornasse immediatamente per riflettere la nuova selezione.ComboBox che non aggiorna DataBindings sull'elemento selezionato modificato (WinForms)

Alcuni Codice: Modulo

public enum MyEnum 
{ 
    First, 
    Second 
} 

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

Esempio:

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)); 
} 

risposta

6

Commento la versione SelectedItem e modificare vincolante il SelectedValue come questo per includere l'UpdateMode:

this.comboBox1.DataBindings.Add(new Binding(
             "SelectedValue", 
             this.bindingSource1, 
             "MyEnum", 
             true, 
             DataSourceUpdateMode.OnPropertyChanged)); 
+0

Questo ha funzionato anche per me. Grazie. Ma non carica il valore iniziale di MyEnum. Devo farlo manualmente? – ehmunnehm

+0

@ehmunnehm Non so a cosa assomigli il tuo codice per rispondere. Prova a pubblicare una nuova domanda con il codice di riproduzione corretto. – LarsTech

0

LarsTech solution è corretto. È anche possibile farlo in modalità di progettazione:

  1. Proprietà ComboBox (F4) -> DataBindings nodo -> Avanzate

  1. Fare clic su ' SelectedValue 'e modifica la modalità di aggiornamento dell'origine dati su' OnPropertyChanged ' enter image description here