在我的Web浏览器控件中启用Tab键

时间:2015-04-28 13:14:48

标签: vb.net outlook webbrowser-control keyboard-shortcuts outlook-addin

我在自定义任务窗格控件(用户控件)中有一个Web浏览器控件,只要我的Outlook打开(我已使用Visual Studio 2013将其创建为Outlook Addin),我就将其作为侧边栏打开。 Web浏览器控件里面有一个登录表单,我想在Outlook打开后立即将注意力放在我的Web浏览器控件中的输入控件上。我已经尝试了几个技巧,例如将焦点放在自定义用户控件上,然后在表单加载后将焦点放在输入控件上,但它没有将焦点放在它上面。此外,我一直试图允许使用Tab和Delete键在Web浏览器控件内部工作,这样我就可以选择其他控件并像在普通浏览器窗口中那样使用它。请告诉我如何实现这一点,因为我没有想法。

干杯。

3 个答案:

答案 0 :(得分:1)

尝试使用Excel WebBrowser控件而不是System.Windows.Forms WebBrowser;它处理特殊的密钥转发,如TAB,DEL,CTRL + V等

更改WebBrowser构造函数
.html

new System.Windows.Forms.WebBrowser();

您需要添加对项目的引用: Project / Add Referernce / Extensions选择  Microsoft.Tools.Outlook& Microsoft.Tools.Outlook.v4.0.Utilities

Doc:https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.controls.webbrowser.aspx

答案 1 :(得分:0)

如果您安装Windows挂钩(SetWindowsHookExW(WH_GETMESSAGE, YourHookProc, 0, GetCurrentThreadId())并且在钩子proc中检测到消息应该发送到您的浏览器,并且相应地重定向它们,则只能这样做。

答案 2 :(得分:0)

它以这种方式部分工作,但不是100%。首先,我必须为我的webbrowser控件将TabStop属性设置为True,然后只需在文档加载后设置焦点即可。 tab,delete,backspace键都正常运行。

Private Sub CustomTaskPane_Load(sender As Object, e As EventArgs) Handles Me.Load
        TestWebBrowser.Size = New Drawing.Size(Me.Width, Me.Height)

        Me.Focus()

        TestWebBrowser.Navigate(url)

        WaitForPageLoad()

        TestWebBrowser.TabIndex = 0
        TestWebBrowser.TabStop = True
    End Sub

Private Sub TestWebBrowser_DocumentCompleted(sender As Object, e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles TestWebBrowser.DocumentCompleted

        ' Now set the focus on the Web Browser Control
        TestWebBrowser.Focus()
End Sub