2017-11-15 17 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 바인딩.