5

我的应用程序包含一个用户可以从中删除项目的 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;
}

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

组合框初始

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

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

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

组合框减少

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

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

组合框已清除

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

组合框初始无数据

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

4

4 回答 4

5

当您填充组合框项目时,请尝试在代码末尾使用它:

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

然后清除它:

comboBoxNumTreno.ResetText();
comboBoxNumTreno.Items.Clear();
comboBoxNumTreno.SelectedIndex = -1;
comboBoxNumTreno.DropDownHeight = 106; // default value
comboBoxNumTreno.IntegralHeight = false; 
于 2015-07-15T11:07:25.417 回答
4

我知道这是一篇旧帖子,但我花了很长时间才弄清楚这一点,我想让以后的任何人都知道。清除组合框后,只需执行空白添加项目并重置高度。

comboBox1.Items.Clear();
comboBox1.Items.Add("");
于 2017-01-20T18:53:35.223 回答
1

要清除组合框,您可以添加以下内容:

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

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

于 2013-07-21T05:44:03.590 回答
0

设置 DropDownHeight 属性以固定大小

 versionComboBox.DropDownHeight = 106; // default value
于 2015-05-06T09:21:57.557 回答