如何使ComboBox Dropdown向上绘制

时间:2012-10-10 09:59:15

标签: c# winforms combobox

在Winform中,我在表单底部有一个ComboBox。 当我运行应用程序时,ComboBox向下绘制下拉列表,该列表超出了表单边框。

如何让ComboBox下拉列表向上绘制?

提前致谢。

1 个答案:

答案 0 :(得分:3)

这不是即时的,但你可以做到,我只是简要介绍你需要的步骤:

  • 将事件处理程序附加到ComboBox.DropDown
  • ComboBox的左/下位置转换为屏幕坐标,并为它们添加偏移量(例如,对两个值都为+1)。
  • 使用WindowFromPoint()来获取下拉窗口的句柄(它在控件下方,这就是为什么+1)。
  • 获取已删除窗口的边界(您可以根据需要使用CB_GETDROPPEDCONTROLRECTGetWindowRect()。)
  • 使用ComboBox将窗口移动到新位置(MoveWindow()顶部 - 向下拉窗口高度)。

这就是全部

修改
请注意,您可以将第2点和第4点合并为一个SendMessageCB_GETDROPPEDCONTROLRECT,您可以获取该窗口的边界以及用作WindowFromPoint()参数的位置。这样你就不会断言下拉窗口总是向下(它不确定窗口何时触及屏幕边界,甚至可能在未来的版本中改变)。