【问题标题】:Enable Tab Key in my Web Browser Control在我的 Web 浏览器控件中启用 Tab 键
【发布时间】:2015-04-28 13:14:48
【问题描述】:

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

干杯。

【问题讨论】:

  • 这是 Outlook 中嵌入的浏览器控件的一个已知问题。考虑使用其他控件来显示登录表单或使用 Windows API 函数来设置挂钩。
  • 你能推荐另一种实现相同的方法而不是浏览器控制吗?我有一个我想在 Outlook 中访问的移动网站,我将它托管在我从中访问它的服务器上,我能找到的唯一方法是使用 Web 浏览器控件。您还有其他建议吗?
  • 我相信您可以创建 REST API 并改为使用它们。
  • 那应该是和手机app通信吧?如果我希望将某些电子邮件信息从电子邮件直接读取到该移动应用程序上怎么办?类似的东西:vimeo.com/95753825
  • 如果其他人正在寻找解决方案,这对我有帮助:DEL and BACKSPACE keys get eaten from WebBrowser

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


【解决方案1】:

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

为此更改 WebBrowser 构造函数

new System.Windows.Forms.WebBrowser();

new Microsoft.Office.Tools.Excel.Controls.WebBrowser();  

您需要添加对项目的引用: 项目/添加参考/扩展选择 Microsoft.Tools.Outlook & Microsoft.Tools.Outlook.v4.0.Utilities

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

【讨论】:

    【解决方案2】:

    您只能在安装 Windows 挂钩时执行此操作(SetWindowsHookExW(WH_GETMESSAGE, YourHookProc, 0, GetCurrentThreadId()) 并且在挂钩 proc 中检测到消息应该发送到您的浏览器,并相应地重定向它们。

    【讨论】:

    • 感谢您的回答。如果可能的话,你能帮我举个例子吗?我真的被这个困住了。
    • 我无法发布代码,因为它是商业产品的一部分,但我很乐意回答您的问题。
    • 对于初学者:如何安装 windows hook?
    • 好吧,基本上我确实把焦点放在了用户控件上,但它只在用户控件上有一个按钮(例如)时才有效,然后我可以从用户控件的按钮切换到我的 web浏览器控制。关于如何将焦点设置到用户控件的 webbrowser 控件 onload 的任何建议?
    【解决方案3】:

    它部分地以这种方式工作,但不是 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 2011-06-17
      • 1970-01-01
      • 2013-10-25
      • 2012-03-27
      相关资源
      最近更新 更多