Outlook 2010/2016中的自定义任务窗格和WebBrowser控件的焦点问题

时间:2018-06-04 16:19:36

标签: vsto webbrowser-control outlook-addin

我有Outlook插件(使用VSTO .net),它在outlook的自定义任务窗格中打开HTML5表单。

问题:Ctrl + A,单击任何outlook字段后,TAB事件无法使用文本区域等HTML本机控件。 例如,我用我的表单打开会议/电子邮件窗口,然后尝试在文本区域中写入任何内容,然后按Ctrl + A它工作正常。但现在如果我点击任何outlook本机字段然后返回到html表单文本区域我不能做Ctrl + A以及TAB键也无法正常工作。但是,我可以在该文本区域中编写任何文本。

此问题已在msdn论坛下面报告,但是已提供解决方法,但是可能会出现一些控件(如下拉列表)的潜在问题。

https://social.msdn.microsoft.com/Forums/en-US/0e411bc7-1dba-4a22-86a6-20529e4fe8ea/focus-problems-with-task-pane-and-webcontrol-in-outlook?forum=outlookdev

为方便添加解决方法以解决此问题:

void webBrowser1_DocumentCompleted(object sender, 
System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
  {
        HtmlDocument doc;
        doc = webBrowser1.Document;
        doc.Click += doc_Click;
  }

void doc_Click(object sender, HtmlElementEventArgs e)
  {
        this.Focus();  // force user control to have the focus
        HtmlElement elem = 
        webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition);
        elem.Focus(); // then let the clicked control to have focus
  }

我虽然这个问题仅限于2010年的展望,但它仍然存在于2016年的展望中。

请注意我已经使用WinForm和WebBrowser控件验证了这种行为,它在那里工作正常。唯一的问题是Outlook。

之前是否还有其他人遇到此问题,是否有任何正确的解决方法?

请参阅上面提供的有youtube链接的链接,以便完全了解问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在任何Office应用程序中托管Web浏览器确实是一个坏主意。由于WPF核心和Office GUI的部分不兼容性导致所有Office和.NET Framework版本中仍存在各种问题。

作为一种解决方法,您可以考虑使用Windows窗体控件重新创建GUI。