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