2012-03-09 3 views
0

나는 대부분의 경우 작동하는 사용자 지정 읽기 전용 콤보 상자를 만들었습니다. 그러나 외부 소스에서 데이터를 다운로드하고 데이터 바인딩을 설정하면 매우 이상한 동작이 발생합니다. 위의 라인에 도달 할 때사용자 지정 콤보 박스의 데이터 바인딩 문제

cboGender.DataSource = Animal.SpecificGenders; 
cboGender.DataBindings.Clear(); 
cboGender.DataBindings.Add("text", animal, "Gender"); 

((ReadOnlyComboBox)cboGender).Readonly = true; 

는,이 속성을 호출 : 아래의 코드를보고하십시오

public bool Readonly 
    { 
     get 
     { 
      return readOnly; 
     } 

     set 
     { 
      textBox.Text = this.Text; 
      ShowControl(); 
      readOnly = value; 
     } 
    } 

지금, 내 문제는 내가 false로 읽기 전용으로 설정하면,이 잘 작동한다는 것입니다. 위 setter의 'this.Text'에는 바인딩 된 값이 표시됩니다. 그러나 Reaonly를 true로 설정하면 'this.Text'는 빈 문자열을 표시합니다. 이것은 내가 만든 유일한 차이점입니다. this.Text는 표준 Combobox Text 속성을 참조합니다.

아무도 아이디어가 있습니까?

답변

0

기본 ComboBox에는 기본적으로 ComboBox를 읽기 전용으로 만드는 DropDownList로 설정할 수있는 DropDownStyle 속성이 있습니다. 어쩌면 독자적인 ReadOnly 속성을 구현하는 대신에 그렇게 할 수 있습니다.

그렇지 않은 경우 ShowControl() 메서드에 문제가 있다고 생각됩니다. textBox.Text 속성을 처음 설정하더라도 ShowControl() 메서드의 내용으로 인해 컨트롤이 업데이트되지 못하고 있습니다. 그리고, 실제로,이 속성에서 다른 속성을 설정하는 것은 나에게 꽤 옳은 것처럼 보이지 않습니다.

이미 데이터 바인딩을 사용하고 있으므로 Text 속성 설정은 이미 다른 곳에서 처리해야합니다.

관련 문제