删除所有项目后的组合框大小问题

时间:2013-07-21 04:46:39

标签: c# combobox resize selecteditem

我的应用程序包含一个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;
}

以下是组合框填充后的屏幕截图:

Combo Box Initial

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

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

以下是删除一些项目后组合框的屏幕截图:

Combo Box Reduced

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

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

Combo Box Cleared

正如您所看到的那样,尺寸太大了。我认为在所有项目都被清除后,它将如下所示:

Combo Box Initial No Data

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

3 个答案:

答案 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