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中没有任何项目,但它的大小就像是一样。
这是删除所有项目后的屏幕截图:

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

有什么想法为什么会这样?
当您填充组合框项目时,尝试在代码末尾使用它:
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)
要清除组合框,您可以添加以下内容:
if (versionComboBox.Items.Count == 0)
{
versionComboBox.Text = string.Empty;
versionComboBox.Items.Clear();
versionComboBox.SelectedIndex = -1;
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是操作数据源中的项目并每次重新绑定控件(您无需担心很多)。