0

enter code here我在表单上有一个 TabControl,在 TabPages 中有 ComboBoxes。

当窗体 OnLoad 时,我填充 ComboBoxes 中的 ListItems 并尝试将默认值设置为 string.Empty。

但是,ComboBox.SelectedText = string.Empty 仅适用于第一个 TabPage。其他 ComboBoxes 忽略该命令并将默认值作为列表中的第一项。为什么会这样?我怎样才能克服它?

ComboBoxes 都是由这个函数设置的

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 在至少显示一次之前不是“活动的”。可以看到,第一次选择 TabPage 时,加载的时间会稍微长一些。我想它是第一次创建/初始化子控件。

为此,我在修改值属性之前调用了 tabControl.SelectTab() 并且它起作用了......虽然它感觉就像一个黑客。

于 2010-12-27T09:53:04.157 回答
0

这是由于数据绑定。您对此无能为力,除了在数据源前面加上一个空/虚拟条目。

于 2010-12-27T07:18:32.497 回答