【问题标题】:ComboBox with Simple DropDownStyle doesn't show the drop down带有 Simple DropDownStyle 的 ComboBox 不显示下拉菜单
【发布时间】:2025-12-20 18:30:13
【问题描述】:

我想使用ComboboxDropDownStyle=Simple,当在框中键入一些内容时,它会更改项目列表。

项目的加载是好的,我可以在Items属性的调试模式下看到它们,但是下拉列表没有显示并且似乎是空的。

我也尝试强制显示下拉放置

MyComboBox.DroppedDown = True;

关于这种行为的任何线索?

【问题讨论】:

  • 您要添加哪些项目,只是字符串?显示下拉菜单是否意味着您输入了某些内容,或者您​​希望能够将其用作正常的下拉框?

标签: c# .net winforms combobox


【解决方案1】:

根据 MSDN:

ComboBoxStyle.Simple 是那种风格

指定列表始终可见并且文本部分是 可编辑。这意味着用户可以输入一个新值,而不是 仅限于选择列表中的现有值。

因此,如果列表始终可见,那么它在哪里。由于默认设置了Size,因此它不可见。像这样更改height

MyComboBox.Size = new System.Drawing.Size(256, 150);

150 在这种情况下表示高度。默认情况下,高度类似于21,非常小。 增加高度到适当的数字,列表应该是可见的。

还有一个非常重要的注意事项:在设置大小之前一定要设置 ComboBoxStyle。我不知道为什么,但这里似乎有些无效或有问题。

所以下面的方法会起作用:

 //Will work
 MyComboBox.DropDownStyle = ComboBoxStyle.Simple;
 MyComboBox.Size = new System.Drawing.Size(256, 150);

但这不会:

 //Will not work
 MyComboBox.Size = new System.Drawing.Size(256, 150);
 MyComboBox.DropDownStyle = ComboBoxStyle.Simple;

后者可能适用于一些明确的无效调用,但我没有验证。

如果您希望在用户单击下拉箭头时打开下拉菜单,那么您必须使用其他组合框样式。在Simple 样式中,下拉箭头不会出现,并且列表将始终如 MSDN 定义所建议的那样可见。

【讨论】:

    【解决方案2】:

    我会将此作为评论发布,但我的声誉还不够高。 你是如何填充 ComboBox 的?

    您的问题似乎很熟悉: ComboBox will not update its display list unless you change selections first

    【讨论】: