【发布时间】:2009-05-15 17:54:14
【问题描述】:
我有一个按钮,点击它会打开一个弹出窗口。 Popup 是一个包含更多按钮的子菜单。单击子菜单上的按钮之一时,弹出窗口将关闭。当用户单击弹出窗口之外的某个位置时,我还希望弹出窗口关闭。还需要注意的是,大部分屏幕都由显示 OpenGL Win Forms 控件的 WindowsFormsHost 占据。
单击子菜单按钮时关闭弹出窗口我已经能够做到。在这些按钮的单击处理程序中,我关闭了弹出窗口。但是,在单击其他地方时关闭弹出窗口是我遇到问题的地方。
我尝试过的事情:
将 PopUp.StaysOpen 设置为 false。这样做的原因是,当单击屏幕上的其他位置时,弹出窗口会关闭。但是,在 Win Forms 控件上,似乎需要单击以关闭弹出窗口,然后再单击以执行任何操作。这是非常不可取的。
我尝试为打开弹出窗口的按钮处理 LostFocus 事件,并将 StaysOpen 设置为 true。这适用于单击弹出窗口不需要第二次单击 Win Forms 控件。现在的问题是处理了 LostFocus 事件,并且 Popup 在读取对 Popup 上的任何按钮的单击之前关闭。这使子菜单无法使用。
【问题讨论】: