C#Combobox和TabControl的问题

时间:2010-12-27 06:55:34

标签: c# winforms tabpage

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

当形式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;

}

2 个答案:

答案 0 :(得分:2)

我发现原因可能是ComboBox在至少显示一次之前没有“活动”。您可以看到,第一次选择TabPage时,加载时间稍长。我想它是第一次创建/初始化子控件。

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

答案 1 :(得分:0)

这是由于数据绑定。除了使用空/虚拟条目为数据源添加前缀之外,您无能为力。