【问题标题】:Focus issue with Custom Task Pane and WebBrowser Control in Outlook 2010/2016Outlook 2010/2016 中自定义任务窗格和 WebBrowser 控件的焦点问题
【发布时间】:2018-11-14 01:00:30
【问题描述】:

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

问题:在单击任何 Outlook 字段后,Ctrl + A、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
  }

我虽然这个问题将仅限于 Outlook 2010,但它仍然存在于 Outlook 2016。

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

以前有没有人遇到过这个问题,有什么适当的解决办法吗?

请参考上面提供的链接,其中包含 youtube 链接以准确了解问题。

感谢您的帮助。

【问题讨论】:

  • 有关于这个问题的消息吗?

标签: vsto webbrowser-control outlook-addin


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复。实际上,重新创建 GUI 不是一种选择。多年来,我们一直在使用带有 flex 表单的 Outlook,没有任何重大问题,但我们不考虑使用 html 重新创建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
相关资源
最近更新 更多