Winforms:如何正确打开combobox?

我在winforms上有一个combobox。 在输入时我甚至打开它:

cbo.DroppedDown = true; 

但如果我这样做,组合会立即打开和关闭。 我究竟做错了什么?

我使用此事件的原因是我需要在Tab上打开组合,当用户单击上一个控件上的选项卡时,此组合打开正常。 但是如果用户单击组合,它会打开和关闭。 怎么做得好?

谢谢

我尝试过就像这样:

 private void comboBox1_enter(object sender, EventArgs e) { comboBox1.DroppedDown = true; } 

没有更改mouseup或定时器。 它的表现与预期一致。 无论我是通过鼠标单击选中combobox还是选中它,下拉列表都会出现并保持打开状态直到我选择了某些内容。

我会看看是否有其他东西将焦点从盒子上移开。

您遇到此问题的原因是因为鼠标事件发生在enter事件之后且默认窗口过程正在关闭combobox。

在输入中,您可以检查鼠标按钮状态,如果按钮已关闭,请不要打开组合。 然后为mouseup事件设置另一个事件处理程序以打开组合。

另一种选择是将计时器设置为几毫秒,并在它关闭时打开组合。

知道这有点旧,但我发现这很好用。 你可以打开combobox打开它,如果你单击箭头它不会关闭备份。

 private void ComboBox_Enter(object sender, EventArgs e) { if (MouseButtons == MouseButtons.None) ((System.Windows.Forms.ComboBox)sender).DroppedDown = true; } 

在combobox的GotFocus事件中设置DroppedDown = true。 否则,下拉列表将显示在错误的位置。

 void cbo_GotFocus(object sender, EventArgs e) { ComboBox cbo = sender as ComboBox; cbo.DroppedDown = true; } 

我想你只需要在打开comboBox之前先关注它。

 cbo.Focus(); cbo.DroppedDown = True 

希望对你有效。