2010-06-16 2 views
0

필자는 WinForms에 대한 경험이 거의 없지만이 작업이 간단한 작업임을 확신합니다. 난 단지 활성화 및 ComboBox의 SelectedIndex에 따라 텍스트 상자의 Enabled 속성을 해제해야합니다.Winforms의 컨트롤 속성을 이용한 데이터 바인딩 : 바인딩 콤보 상자의 상태를 사용할 수 있습니까?

DataBindings를 사용하여 디자이너에서이 작업을 수행 할 수 있습니까? 아니면 어떤 종류의 처리기를 작성해야합니까?

답변

0

바인딩 할 수 있지만 로직을 수행하려면 값 -> 부울 변환기를 작성해야합니다. 어쨌든 당신이 아마 코드에서 데이터 바인딩을 정의해야 할 것처럼 winforms가 이벤트 핸들러와 함께가는 ViewModel 패러다임을 지원하지 않기 때문에 나는 제안 할 것이다.

public void MyComboBox_SelectedIndexChanged(object sender, EventArgs args) 
{ 
    ComboBox box = sender as ComboBox; 
    if (box != null) return; 

    switch(box.Text) 
    { 
     case "Value1": 
     case "Value2": 
     case "Value3": 
     myTextBox.Enabled = false; 
     break; 
     default: 
     myTextBox.Enabled = true; 
    } 
} 
+0

그래, 이미 이처럼 많은 코드가 있지만, 코드를 덜 복잡하게 만들기 위해 디자이너쪽으로 이동하려고합니다. 이 경우에 변환이 필요하다는 것은 유효한 지적입니다. 또한 Enabled가 CheckBox.Checked에 바인딩 된 비슷한 상황이 있지만 디자이너를 통해 databinding을 입력하는 것처럼 보이지 않습니다. 수동으로 디자이너 파일에 코드를 지정하면 코드가 표시됩니다 (회색으로 표시됨).) 디자이너. – bwerks

+0

더 자세히 지정하려면 컨트롤의 속성 창에서 "(DataBindings)"섹션에서 열린 "서식 및 고급 바인딩"창에서 "바인딩 :"목록이 항상 비어 있고 어떻게 나타나는지 모릅니다 그것에 물건을 추가하는 것. – bwerks