我的应用程序包含一个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中删除所选项目:
if (versionComboBox.SelectedIndex >= 0)
{
versionComboBox.Items.Remove(versionComboBox.SelectedItem);
}
if (versionComboBox.Items.Count > 0)
{
versionComboBox.SelectedIndex = 0;
}
以下是删除一些项目后组合框的屏幕截图:
我遇到的问题是当删除最后一项时,ComboBox会将其自身调整为最初填充时的大小。 ComboBox中没有任何项目,但它自身的大小就好像有。
以下是删除所有项目后的屏幕截图:
正如您所看到的那样,尺寸太大了。我认为在所有项目都被清除后,它将如下所示:
有关为何发生这种情况的任何想法?
答案 0 :(得分:4)
我知道这是一篇很老的帖子,但我花了很长时间才弄明白这一点,我想让未来的任何人都知道。清除组合框后,只需执行空白添加项目,然后重置高度。
comboBox1.Items.Clear();
comboBox1.Items.Add("");
答案 1 :(得分:1)
要清除组合框,可以添加以下内容:
if (versionComboBox.Items.Count == 0)
{
versionComboBox.Text = string.Empty;
versionComboBox.Items.Clear();
versionComboBox.SelectedIndex = -1;
}
另一种方法是操纵数据源中的项目并每次重新绑定控件(更不用担心了)。
答案 2 :(得分:0)
将DropDownHeight属性设置为固定大小
versionComboBox.DropDownHeight = 106; // default value