VB中禁用Microsoft.Web.WebView2.WinForms.WebView2的Ctrl+F查找及窗体切换问题处理
WebView2 WinForms控件两个问题的VB解决方案
1. 禁用Ctrl+F触发的查找功能
有两种可靠实现方式:
- 方式一:直接关闭查找功能
在WebView2的CoreWebView2InitializationCompleted事件中修改核心设置,彻底禁用查找功能,Ctrl+F将不再触发查找窗口:
Private Sub WebView21_CoreWebView2InitializationCompleted(sender As Object, e As CoreWebView2InitializationCompletedEventArgs) Handles WebView21.CoreWebView2InitializationCompleted If e.IsSuccess Then WebView21.CoreWebView2.Settings.IsFindEnabled = False End If End Sub
- 方式二:仅拦截Ctrl+F快捷键
如果需要保留其他查找触发方式(比如脚本调用),可在WebView2的PreviewKeyDown事件中拦截组合键:
Private Sub WebView21_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles WebView21.PreviewKeyDown If e.Control AndAlso e.KeyCode = Keys.F Then e.IsInputKey = True ' 标记为已处理,阻止WebView2响应 End If End Sub
注意:此方式仅在WebView2控件获得焦点时生效。
2. 切换窗体时自动关闭查找窗口
监听WebView2所在窗体的Deactivate事件,当窗体失去激活状态时,强制关闭查找窗口:
Private Sub Form1_Deactivate(sender As Object, e As EventArgs) Handles Me.Deactivate If WebView21.CoreWebView2 IsNot Nothing Then WebView21.CoreWebView2.StopFinding(CoreWebView2StopFindAction.HideFindUI) End If End Sub
如果需要精准控制(仅当查找窗口显示时才关闭),可结合FindUIChanged事件记录状态:
Private isFindUIShowing As Boolean = False Private Sub WebView21_FindUIChanged(sender As Object, e As Object) Handles WebView21.CoreWebView2.FindUIChanged isFindUIShowing = WebView21.CoreWebView2.IsFindUIShowing End Sub Private Sub Form1_Deactivate(sender As Object, e As EventArgs) Handles Me.Deactivate If WebView21.CoreWebView2 IsNot Nothing AndAlso isFindUIShowing Then WebView21.CoreWebView2.StopFinding(CoreWebView2StopFindAction.HideFindUI) isFindUIShowing = False End If End Sub
内容的提问来源于stack exchange,提问作者Manjeet Kumar
相关产品推荐
相关产品推荐

