0

enter code hereフォームにTabControlがあり、TabPagesにComboBoxがあります。

フォームがOnLoadの場合、ComboBoxesにListItemsを入力し、デフォルト値をstring.Emptyに設定しようとします。

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

ComboBoxはすべてこの関数によって設定されます

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;

}

4

2 に答える 2

2

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

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

于 2010-12-27T09:53:04.157 に答える
0

これはデータバインディングによるものです。データソースの前に空/ダミーのエントリを付けることを除いて、それについてできることはあまりありません。

于 2010-12-27T07:18:32.497 に答える