【问题标题】:Closing dropdown menustrip in webview2在 webview2 中关闭下拉菜单条
【发布时间】: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 或类似的东西一起工作,我会发布它。

标签: vb.net webview2


【解决方案1】:

Thanx Jimi 和 Poul 我解决了这个问题。 这对你来说很简单。 解决方案: 1 我的网页是 openlayers 地图,其中有一个可供点击的事件列表,

map.on('singleclick', function (event) {
    var lonLat = ol.proj.toLonLat(event.coordinate);
    var str = lonLat[0] + "," + lonLat[1];

(window.chrome.webview.hostObjects.sync.Bridge).Map_click(str);

});

Vb 网 2. 我在 vb net 和 javascript 之间架起了一座桥梁 WebView21.CoreWebView2.AddHostObjectToScript("Bridge", New Bridge()) 在我的 vb 网络桌面应用程序和 Webppage 上的 javascript 之间架起一座桥梁。

3 我遍历菜单项并隐藏菜单项的下拉菜单

Private Sub clearmenustrip() For Each mnuitem As System.Windows.Forms.ToolStripMenuItem In Fmenu.MenuStrip1.Items
        mnuitem.HideDropDown()
    Next
End Sub 

MenuStrip1 是表单中的菜单条

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 2013-04-06
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多