删除所有项目后的combobox大小问题

我的应用程序包含一个ComboBox,用户可以从中删除项目。 程序启动时,它会从配置文件中读入的字符串列表中填充ComboBox。

以下是添加项目的代码:

// version list is an array of strings foreach (string version in versionList) { versionComboBox.Items.Add(version); } if (versionComboBox.Items.Count > 0) { versionComboBox.SelectedIndex = 0; } 

以下是combobox填充后的屏幕截图:

组合框初始

如果用户单击“ 删除”按钮,程序将使用以下代码从ComboBox中删除所选项:

 if (versionComboBox.SelectedIndex >= 0) { versionComboBox.Items.Remove(versionComboBox.SelectedItem); } if (versionComboBox.Items.Count > 0) { versionComboBox.SelectedIndex = 0; } 

以下是删除几个项目后combobox的屏幕截图:

组合框减少

我遇到的问题是当最后一个项目被删除时,ComboBox会将自身调整为最初填充时的大小。 ComboBox中没有任何项目,但它自身的大小就好像有。

这是删除所有项目后的屏幕截图:

组合框清除

如你所见,尺寸太大了。 我认为在清除所有项目后,它将如下所示:

组合框初始没有数据

有关为什么会发生这种情况的任何想法?

要清除combobox,可以添加以下内容:

 if (versionComboBox.Items.Count == 0) { versionComboBox.Text = string.Empty; versionComboBox.Items.Clear(); versionComboBox.SelectedIndex = -1; } 

另一种方法是操纵数据源中的项目并每次重新绑定控件(更不用担心了)。

在填充combobox项目时,尝试在代码末尾使用它:

 comboBoxNumTreno.IntegralHeight = true; // auto fit dropdown list 

然后清除它:

 comboBoxNumTreno.ResetText(); comboBoxNumTreno.Items.Clear(); comboBoxNumTreno.SelectedIndex = -1; comboBoxNumTreno.DropDownHeight = 106; // default value comboBoxNumTreno.IntegralHeight = false; 

我知道这是一个老post,但我花了很长时间才弄明白这一点,我想让未来的任何人都知道。 清除combobox后,只需执行空白添加项目,然后重置高度。

 comboBox1.Items.Clear(); comboBox1.Items.Add(""); 

设置DropDownHeight属性以修复大小

  versionComboBox.DropDownHeight = 106; // default value