2017-11-15 19 views
-1

コンボボックスがDropDownStyle=DropDownList(ユーザーが何も入力できないことを意味し、ドロップダウンから選択することを意味する)に設定されています。コンボには状態のリストが含まれています。コンボボックスの選択されたテキスト値をオブジェクトのプロパティにバインドする方法

選択したテキスト値を_model.StateBarにバインドしようとしていますが、コードがオブジェクトのプロパティを更新していないようです。私は、次の両方を試した

cboStates.DataBindings.Add("Text", _model, "StateBar") 
cboStates.DataBindings.Add("SelectedItem", _model, "StateBar") 
cboStates.DataBindings.Add("SelectedValue", _model, "StateBar") 

私はちょうどそれを一つの方法をバインドする必要があります。コントロールからのアップデートは、オブジェクト上で終わる必要があります。

+0

'SelectedValue'、' Text'と 'SelectedItem'は正しく機能します。コンボボックスがフォーカスを失った後に、値を 'DataSource'に設定することを忘れないでください。この振る舞いを変更するには、バインディング '...、true、DataSourceUpdateMode.OnPropertyChanged)を追加する他のオーバーロードを使用できます。 –

+0

は、あなたのコンボボックスが何時でもタブページに置かれていますか?そうであれば、タブからフォーム自体に移動するときにバインディングが動作しますか? –

答えて

0

ComboBox.SelectedValueにバインドする必要があります。ただし、ComboBox.DataSourceでアイテムを追加する場合にのみ有効です。

public class Model 
{ 
    public string StateBar { get; set; } 
} 

// In the form 

var states = new List<string> { "Alabama", "California" }; 

combobox.DataSource = states; 
combobox.DataBindings.Add("SelectedValue", _model, "StateBar", true, DataSourceUpdateMode.OnPropertyChanged); 

SelectedItemへの結合はすべてのケースで動作するはずです。

関連する問題