【发布时间】:2017-03-03 15:53:08
【问题描述】:
这与this question密切相关,尚未发布答案。
我有一个表单,我希望只有在该表单上的文本框内单击时才启用快捷菜单(右键单击弹出的菜单)(在其他任何地方都禁用)。问题是该选项似乎只对整个表单是全局的。
将表单的 ShortcutMenu 设置为 False,我可以在 TextBox 的“On Enter”事件中使用“ShortcutMenu = True”将其设置为 True,这样在输入 TextBox 之前右键单击什么也不做。这样做的问题是,当用户进入TextBox时,如果他在表单中的其他任何地方右键单击,就会出现右键菜单,这不是我想要的。
在同一个 TextBox 的“On Exit”事件中使用“ShortcutMenu = False”禁用 ShortcutMenu 有效,但前提是用户点击了另一个控件,而不是之前,这不能解决问题。
在某个地方执行右键单击操作之前,是否有运行“ShortcutMenu = False”? (进入文本框后)。类似于“鼠标离开此控件”事件?
【问题讨论】:
-
不确定,但您能否使用 Form 'MouseMove' 事件来确定是否在该框上,或者可能是 MouseDown 事件或 GotFocus 事件?
-
在 TextBox 上使用 GotFocus 会导致启用快捷菜单的行为与我上面使用的类似。我可以看到 MouseMove 工作,但我必须知道确切的位置,在 TextBox 的 Twips 中,所以我可以做“如果指针在框位置之外......”但我不够熟练,无法做到这一点。此外,这将继续执行闪烁表单内容的“ShortcutMenu = False”。
-
一英寸大约有 1440 缇。所以你可以立即检查 If X >= Me.txtA,Left * 1440 and X = Me.txtA.Top * 1440 and Y
-
@WayneG.Dunn :感谢您的评论,但 O.Gungor 发布的解决方案有效,我时间紧迫,无法探索您的想法。