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

Jan*_*cci 5 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;
}
Run Code Online (Sandbox Code Playgroud)

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

组合框初始

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

if (versionComboBox.SelectedIndex >= 0)
{
    versionComboBox.Items.Remove(versionComboBox.SelectedItem);
}
if (versionComboBox.Items.Count > 0)
{
    versionComboBox.SelectedIndex = 0;
}
Run Code Online (Sandbox Code Playgroud)

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

组合框减少

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

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

组合框已清除

如您所见,大小太大。我认为在清除所有项目后,它看起来将如下所示:

组合框初始无数据

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

Luk*_*uke 5

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

comboBoxNumTreno.IntegralHeight = true; // auto fit dropdown list
Run Code Online (Sandbox Code Playgroud)

然后清除它:

comboBoxNumTreno.ResetText();
comboBoxNumTreno.Items.Clear();
comboBoxNumTreno.SelectedIndex = -1;
comboBoxNumTreno.DropDownHeight = 106; // default value
comboBoxNumTreno.IntegralHeight = false; 
Run Code Online (Sandbox Code Playgroud)


Dim*_*rov 1

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

if (versionComboBox.Items.Count == 0)
{
    versionComboBox.Text = string.Empty;
    versionComboBox.Items.Clear();
    versionComboBox.SelectedIndex = -1;
}
Run Code Online (Sandbox Code Playgroud)

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