WPF WebBrowser 禁用单击和键入
WPF WebBrowser disable clicking & typing
有没有办法阻止用户在 WPF WebBrowser 中单击和键入?在我看来,只能在 WinForms 中执行此操作。
我尝试过的事情:
browser.IsEnabled = false;
- 无效,仍然可以单击(导航)并输入文本
browser.Focusable = false;
- 相同
- 有覆盖按钮,这会消耗点击和焦点 - WebBrowser 是一个特殊元素,它总是在其他元素之上
- 在主浏览器之上加载另一个 WebBrowser,加载空白页面并将不透明度设置为 0% 作为覆盖按钮的替代方法 (3.) - WPF WebBrowsers 无法正确处理不透明度,不起作用
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;
}
}
有没有办法阻止用户在 WPF WebBrowser 中单击和键入?在我看来,只能在 WinForms 中执行此操作。
我尝试过的事情:
browser.IsEnabled = false;
- 无效,仍然可以单击(导航)并输入文本browser.Focusable = false;
- 相同- 有覆盖按钮,这会消耗点击和焦点 - WebBrowser 是一个特殊元素,它总是在其他元素之上
- 在主浏览器之上加载另一个 WebBrowser,加载空白页面并将不透明度设置为 0% 作为覆盖按钮的替代方法 (3.) - WPF WebBrowsers 无法正确处理不透明度,不起作用
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;
}
}