我的应用程序包含一个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中没有任何项目,但它的大小就像是在调整大小一样。

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

如您所见,大小太大。我认为在清除所有项目后,它将类似于以下内容:

有什么想法为什么会这样?

最佳答案

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

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

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

10-05 23:32