删除所有项目后的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