在Winform中,我在表单底部有一个ComboBox。 当我运行应用程序时,ComboBox向下绘制下拉列表,该列表超出了表单边框。
如何让ComboBox下拉列表向上绘制?
提前致谢。
答案 0 :(得分:3)
这不是即时的,但你可以做到,我只是简要介绍你需要的步骤:
ComboBox.DropDown
。ComboBox
的左/下位置转换为屏幕坐标,并为它们添加偏移量(例如,对两个值都为+1)。WindowFromPoint()
来获取下拉窗口的句柄(它在控件下方,这就是为什么+1)。CB_GETDROPPEDCONTROLRECT
或GetWindowRect()
。)ComboBox
将窗口移动到新位置(MoveWindow()
顶部 - 向下拉窗口高度)。这就是全部
修改强>
请注意,您可以将第2点和第4点合并为一个SendMessage
和CB_GETDROPPEDCONTROLRECT
,您可以获取该窗口的边界以及用作WindowFromPoint()
参数的位置。这样你就不会断言下拉窗口总是向下(它不确定窗口何时触及屏幕边界,甚至可能在未来的版本中改变)。