如何让WPF WebBrowser只读?

3
5个回答

8
捕获WebBrowser控件的Navigating事件,并将其NavigatingCancelEventArgs的Cancel属性设置为True。
Visual Basic代码...
私有子WebBrowser1_Navigating(...) Handles WebBrowser1.Navigating 如果WebBrowser1被锁定 Then e.Cancel = True End If End Sub
这需要一个全局锁定布尔变量。
Partial Public Class Window1 Dim WebBrowser1Locked As Boolean = True ... End Class
并且需要在所需的导航周围包装锁定和解锁。
WebBrowser1Locked = False WebBrowser1.NavigateToString("...") WebBrowser1Locked = True

6

你不能只是在整个控件上放置一个透明的窗口,并捕获所有的鼠标和键盘事件吗?


2
也许您可以捕获控件的点击事件,并在它尝试导航到链接之前将其丢弃?我不确定是否可能,但我会尝试一下。

WebBrowser控件没有Click事件,而是有Navigating事件。请查看我的答案获取完整解决方案。 - Zack Peterson

1

您需要对输入进行清理。

不允许使用锚点或脚本标签或on属性。(我不知道您是否可以在控件上禁用JavaScript,但这是一个好主意。)


这对我的目的不起作用。我希望我的用户可以创建链接。我只想确保“预览”窗格是正确页面的预览。 - Zack Peterson
哦,我明白了。那真是个难题。 - EndangeredMassa

-1

有人尝试过使用WebBrowserControl.AllowNavigation = False吗? 我认为这样做可以解决问题。您可以在运行时根据需要启用和禁用该属性。我使用一个计时器来禁用该属性,并设置自定义延迟,以便文档有足够的时间加载。

祝好运, 丹


2
问题在于WPF WebBrowser没有像WinForms版本那样具备AllowNavigation(或其他一堆东西)。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接