WPF WebBrowser 禁用单击和键入

WPF WebBrowser disable clicking & typing

有没有办法阻止用户在 WPF WebBrowser 中单击和键入?在我看来,只能在 WinForms 中执行此操作。

我尝试过的事情:

  1. browser.IsEnabled = false; - 无效,仍然可以单击(导航)并输入文本
  2. browser.Focusable = false; - 相同
  3. 有覆盖按钮,这会消耗点击和焦点 - WebBrowser 是一个特殊元素,它总是在其他元素之上
  4. 在主浏览器之上加载另一个 WebBrowser,加载空白页面并将不透明度设置为 0% 作为覆盖按钮的替代方法 (3.) - WPF WebBrowsers 无法正确处理不透明度,不起作用
  5. browser_MouseDown 带有 e.Handled = true; 的事件 - 由于某种原因,该事件未在鼠标按下时调用

在我的尝试中有没有遗漏或做错了什么?

三个事件和布尔为我做了。

    bool BrowserIsLoaded = false;

    private void Browser_LoadCompleted(object sender, NavigationEventArgs e)
    {
        BrowserIsLoaded = true;
    }

    private void Browser_Navigating(object sender, NavigatingCancelEventArgs e)
    {
        if(BrowserIsLoaded)
            e.Cancel = true;
    }

    private void Browser_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (BrowserIsLoaded)
            e.Handled = true;
    }

当浏览器完成加载时,它会触发 LoadCompleted 事件。设置一个布尔值,然后在他们尝试在框中键入时尝试导航到新页面时进行检查。

如果您不想使用自己的布尔值(我将它用于其他事情,所以它对我来说很有意义)您可以在需要时询问浏览器是否已加载它:

    private void Browser_Navigating(object sender, NavigatingCancelEventArgs e)
    {
         WebBrowser wb = (WebBrowser)sender;
         if(wb.IsLoaded)
         {
              e.Cancel = true;
         }
    }