【发布时间】:2013-08-02 00:35:52
【问题描述】:
我在样式属性设置为“0 - 下拉组合”的用户控件上有一个组合框 (cboURL)。当组合框获得焦点并按下 F1 时,会显示一个包含错误文本“此程序无法显示网页”的对话框窗口。
所需的行为是将 F1 按键发送到 UserControl_KeyDown 以便可以抑制 F1(就像对 UserControl 上的所有其他控件一样):
Private Sub UserControl_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF1 Then KeyCode = 0
End Sub
UserControl 的 KeyPreview 属性设置为 True。
在 cboURL 中按下 F1 时,不会调用任何事件处理程序 cboURL_KeyDown()、cboURL_KeyUp()、cboURL_KeyPress()、UserControl_KeyDown()、UserControl_KeyUp() 或 UserControl_KeyPress()。也不会在嵌入用户控件的表单中调用 Form_KeyDown()、Form_KeyPress() 或 Form_KeyUp() 事件处理程序。
如果 cboURL 的 Style 属性设置为“2 - 下拉列表”,那么当按下 F1 时,UserControl_KeyDown 被调用。但是,我不能使用该设置,因为我需要能够输入不在下拉选项列表中的文本。
确实存在此应用程序的 .chm 帮助文件(由 hhc.exe 生成),但它不是独立的帮助文件。例如,从 Windows Exporer 中双击它会给出与上述相同的错误对话框。帮助文件包含使用控件的 WhatsThisHelpID 属性访问的弹出帮助文本。
谁能建议解决此问题的方法或解决方法?
【问题讨论】:
-
听起来它正在尝试为您的程序加载帮助文件,该文件显然不存在。 F1 是加载帮助文件的默认键。您是否尝试过检查表单的
KeyDown/KeyPress事件以查看它是否被触发? -
尝试在包含表单上设置
KeyPreview = True,KeyDown事件处理程序会在那里。在这里工作。 -
阿尔菲,谢谢您的回复。针对您的问题,我添加了更多信息。
-
wqw - 谢谢。这已经解决(或解决了!)问题。