【发布时间】:2023-04-08 15:55:01
【问题描述】:
我在桌面应用程序中有一个带有菜单条的网页。我使用 webview2 作为 webbrowser 控件。当我单击菜单条时,菜单下拉菜单。问题是当我点击网页时下拉菜单没有隐藏。在标准的 vb 网络浏览器中,这不会发生。那么如何在 webview2 中隐藏下拉菜单呢?
或许答案就在VB网。我正在寻找一种方法来关闭我的表单菜单栏的下拉菜单我可以从网页上的 javascript 调用此方法
【问题讨论】:
-
CoreWebView2 初始化完成时添加此 Javascript:
document.addEventListener('mousedown', function (event) { window.chrome.webview.postMessage('MouseDown'); });。然后await [WebView2].CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("[The Script String]")。向WebMessageReceived添加一个处理程序,在其中检查if e.WebMessageAsJson.Contains("MouseDown"),循环[MenuStrip].Items.OfType(Of ToolStripMenuItem)()并在每个上调用[item].HideDropDown()。 -- 请注意,这仅在加载页面时有效,如果控件为空白,则不会引发任何事件。 -
这仍然是 WinForms 控件中的问题。另请参阅:Webview2.Winforms.DOM
-
@jimi:不要写这么长的cmets,打算回答这个问题,写一个答案!
-
@PoulBak 这不是答案,而是测试这个丑陋的东西,看看它是否适合你。我不确定它是否(WebView2 版本未定义,因为它是 UI 平台 - 是的,MenuStrip 调用 WinForms)。而且,我真的不喜欢它。如果我可以让它与 CoreWebView2CompositionController 或类似的东西一起工作,我会发布它。