WPF WebBrowser禁用点击&打字

时间:2017-09-10 08:47:03

标签: c# wpf webbrowser-control

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

我尝试过的事情:

  1. browser.IsEnabled = false; - 无效,仍可点击(导航)并输入文字
  2. browser.Focusable = false; - 同样
  3. 有叠加按钮,会消耗点击和焦点 - WebBrowser是一个特殊元素,总是在其他元素之上
  4. 将另一个WebBrowser放在主屏幕上,加载空白页面并将不透明度设置为0%作为覆盖按钮(3.)的替代方法 - WPF WebBrowsers无法正确处理不透明度,无法正常工作
  5. 带有browser_MouseDown
  6. e.Handled = true;事件 - 该事件由于某种原因未在鼠标按下时调用
  7. 我的尝试中是否有错过或做错的事情?

1 个答案:

答案 0 :(得分:1)

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

    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;
         }
    }