webBrowser 控件和双击
webBrowse control and Double Clicking
有人要求我创建一个非常简单的 windows 应用程序,其中表单上的唯一项目是 webBrowse 控件。我设置了一些尺寸元素并导航到所需的 URL。基本上这是一个自定义的 Kiosk 模式。
问题是该网页具有需要双击的功能,这些功能在 IE11 中可以正常工作,但在自助服务终端应用程序中却不行。我一直在尝试研究和玩这个整个上午都无济于事。到目前为止我得到的最好的是:
private void mainBrowse_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
mainBrowse.Document.Body.AttachEventHandler("ondblclick", Document_DoubleClick);
}
void Document_DoubleClick(object sender, EventArgs e)
{
this.mainBrowse.Document.GetElementFromPoint(MousePosition).InvokeMember("doubleclick");
//MessageBox.Show("double click detected");
}
消息框触发(未注释掉时)但我无法让它通过事件传递到基础页面?
当我意识到这是一个 Kendo 图表(不是我熟悉的技术)时,我将其添加到我的搜索中并找到了这个页面:
https://www.telerik.com/forums/gantt-does-not-render-correctly-in-winforms-webbrowser-control
在此之后,我为 _Navigated 创建了一个事件并注入了它推荐的必要脚本:
private void mainBrowse_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
HtmlDocument doc = mainBrowse.Document;
HtmlElement head = doc.GetElementsByTagName("head")[0];
HtmlElement s = doc.CreateElement("script");
s.SetAttribute("text", "window.MSPointerEvent = null;window.PointerEvent = null; ");
head.AppendChild(s);
}
这奏效了,让人松了一口气。
有人要求我创建一个非常简单的 windows 应用程序,其中表单上的唯一项目是 webBrowse 控件。我设置了一些尺寸元素并导航到所需的 URL。基本上这是一个自定义的 Kiosk 模式。
问题是该网页具有需要双击的功能,这些功能在 IE11 中可以正常工作,但在自助服务终端应用程序中却不行。我一直在尝试研究和玩这个整个上午都无济于事。到目前为止我得到的最好的是:
private void mainBrowse_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
mainBrowse.Document.Body.AttachEventHandler("ondblclick", Document_DoubleClick);
}
void Document_DoubleClick(object sender, EventArgs e)
{
this.mainBrowse.Document.GetElementFromPoint(MousePosition).InvokeMember("doubleclick");
//MessageBox.Show("double click detected");
}
消息框触发(未注释掉时)但我无法让它通过事件传递到基础页面?
当我意识到这是一个 Kendo 图表(不是我熟悉的技术)时,我将其添加到我的搜索中并找到了这个页面:
https://www.telerik.com/forums/gantt-does-not-render-correctly-in-winforms-webbrowser-control
在此之后,我为 _Navigated 创建了一个事件并注入了它推荐的必要脚本:
private void mainBrowse_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
HtmlDocument doc = mainBrowse.Document;
HtmlElement head = doc.GetElementsByTagName("head")[0];
HtmlElement s = doc.CreateElement("script");
s.SetAttribute("text", "window.MSPointerEvent = null;window.PointerEvent = null; ");
head.AppendChild(s);
}
这奏效了,让人松了一口气。