2

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

我怎样才能使组合框下拉列表向上绘制?

提前致谢。

4

1 回答 1

3

这不是立即的,但您可以做到,我将概述您需要的步骤:

  • 将事件处理程序附加到ComboBox.DropDown.
  • 将左/下位置转换ComboBox为屏幕坐标并将它们添加一个偏移量(例如,两个值都为 +1)。
  • 使用 useWindowFromPoint()来获取下拉窗口的句柄(它在控件下方,这就是 +1 的原因)。
  • 获取拖放窗口的边界(您可以使用CB_GETDROPPEDCONTROLRECTGetWindowRect(),根据您的喜好)。
  • 使用 .将窗口移动到新位置(ComboBox从上到下的窗口高度)MoveWindow()

就这样

编辑
请注意,您可以合并第 2 点和第 4 点,SendMessageCB_GETDROPPEDCONTROLRECT您可以得到该窗口的边界和用作参数的位置WindowFromPoint()。通过这种方式,您不会断言下拉窗口始终是向下的(不确定窗口何时接触屏幕边界,甚至可能在未来的版本中发生变化)。

于 2012-10-10T10:24:58.363 回答