2012-03-09 16 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に読み取り専用に設定すると、これは正常に動作していることである以下のコードを見てください。上のセッターの 'this.Text'には、バインドされた値が表示されます。しかし、Reaonlyをtrueに設定すると、 'this.Text'には空の文字列が表示されます。これが私が作る唯一の違いです。 this.Textは、標準のCombobox Textプロパティを参照します。

誰にもアイデアはありますか?

答えて

0

基本ComboBoxにはDropDownStyleプロパティがあり、これは基本的にComboBoxを読み取り専用にするDropDownListに設定できます。あなた自身のReadOnlyプロパティを実装する代わりに、それを行うこともできます。

もしそうでなければ、問題がShowControl()メソッドに存在すると思われます。最初にtextBox.Textプロパティを設定していても、ShowControl()メソッドの何かがコントロールの更新を妨げています。そして、実際には、このプロパティから別のプロパティを設定することは、私にとってはかなり正しいとは思われません。

既にDataBindingを使用しているため、Textプロパティの設定は既に別の場所で処理されているはずです。

関連する問題