在Winform中,我在表单底部有一个组合框。 当我运行该应用程序时,ComboBox 会向下绘制下拉列表,该列表超出了表单边框。
如何使 ComboBox 下拉列表向上绘制?
提前致谢。
最佳答案
这不是立即的,但您可以做到,我将概述您需要的步骤:
- 将事件处理程序附加到
ComboBox.DropDown
。 - 将
ComboBox
的左侧/底部位置转换为屏幕坐标,并为其添加偏移量(例如,为两个值都+1)。 - 使用
WindowFromPoint()
获取下拉窗口的句柄(它位于控件下方,这就是 +1 的原因)。 - 获取放置窗口的边界(您可以根据需要使用
CB_GETDROPPEDCONTROLRECT
或GetWindowRect()
)。 - 使用
MoveWindow()
将窗口移动到新位置(ComboBox
顶部 - 下拉窗口高度)。
就这些了
编辑
请注意,您可以合并点 2 和 4,通过单个 SendMessage
和 CB_GETDROPPEDCONTROLRECT
您可以获得该窗口的边界以及用作 WindowFromPoint 参数的位置()
。通过这种方式,您不会断言下拉窗口始终向下(不确定窗口何时接触屏幕边界,甚至可能在未来版本中发生变化)。
关于c# - 如何使组合框下拉菜单向上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816650/