2010-12-27 17 views
0

enter code here私はTabControlをフォーム上に持ち、タブページにはコンボボックスがあります。C#ComboboxとTabControlの問題

フォームをOnLoadにすると、コンボボックスのListItemsとデフォルト値をstring.Emptyに設定しようとしています。

ただし、ComboBox.SelectedText = string.Emptyは、最初のTabPageに対してのみ機能します。他のコンボボックスはコマンドを無視し、リストの最初の項目として既定値をとります。なぜこれはそうですか?どうすれば克服できますか?

コンボボックスは、すべてのこの機能

public static void PrepareComboBox(ComboBox combobox, FieldValueList list) 
{ 
    combobox.DropDownStyle = ComboBoxStyle.DropDown; 
    combobox.AutoCompleteSource = AutoCompleteSource.ListItems; 
    combobox.AutoCompleteMode = AutoCompleteMode.Suggest; 
    combobox.DataSource = list.DataSource; 
    combobox.DisplayMember = list.DisplayMember; 
    combobox.ValueMember = list.ValueMember; 
    combobox.Text = string.Empty; 
    combobox.SelectedText = string.Empty; 

}

答えて

2

ComboBoxが少なくとも1回表示されるまで「アクティブ」でないことが原因であることがわかりました。初めてTabPageを選択すると、読み込むのに少し時間がかかることがわかります。私はそれが最初に子コントロールを作成/初期化していると仮定します。

そのため、値のプロパティを変更する前にtabControl.SelectTab()を呼び出して、ハックのように感じましたが、機能しました。

0

これは、データバインディングのためであることにより、設定されています。空である/ダミーのエントリをデータソースの先頭に置くことを除いて、それについてはほとんどできません。