C#如何禁用webbrowser使用

时间:2009-02-26 17:27:39

标签: c# winforms

我有一个C#应用程序,它有一个webbrowser,需要能够完全禁用它。这样做的最佳方法是什么?

我正在考虑创建一个透明面板以在需要时放置webbrowser,但我不确定这是否是最好的方法。我还注意到C#不容易让面板变得透明。

编辑:通过禁用澄清我的意思...我不想让用户能够点击或更改\编辑webbrowser中的任何内容。

5 个答案:

答案 0 :(得分:17)

奇怪的是,WebBrowser控件没有您所期望的Enabled属性。您可以将AllowNavigation属性设置为false,这将阻止用户单击链接。

原来它确实有一个Enabled属性,继承自Control。但是你必须明确地将它转换为Control才能访问它:

((Control)webBrowser1).Enabled = false;

您应该知道,设置Enabled 完全会禁用与WebBrowser控件的任何用户交互。这包括滚动条,因此一旦将Enabled设置为false,用户甚至无法滚动控件中的网页。

如果这比您想要的更多,那么将AllowNavigation属性设置为false将停止用户单击链接但仍允许他们滚动页面。你需要检查它是否也会阻止Javascript onclick事件发生。

如果你想阻止在页面中触发任何事件,你可能会实现一些DOM从WebForms代码到WebBrowser控件的工作。您可能还需要开始禁用WebBrowser中的输入控件。这一切都取决于你想要它的残疾程度。

答案 1 :(得分:3)

根据您的上一条评论,我假设您使用的是WinForms。 (WPF确实允许透明面板:-))这意味着您正在使用WebBrowser控件。您是否尝试将其Enabled属性设置为false?

答案 2 :(得分:1)

当你说'禁用'时,你的意思是什么?如果将“已启用”属性设置为false,则会将其禁用,这适用于所有表单控件。但是如果需要,可以通过设置BackColor将面板设置为透明。

更新: 实际上,你是对的,它是ActiveX控件的包装器,因此它不是典型的WinForms控件。你想要的是透明的paenl解决方案。这个人Tobi在他的博客上有一个解决方案:

http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html

基本思想是在面板类上覆盖此方法:

protected override CreateParams CreateParams
{
    get
    {
         CreateParams createParams = base.CreateParams;
         createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
         return createParams;
    }
}

答案 3 :(得分:0)

您可以从其父控件数组中删除Web浏览器吗?

答案 4 :(得分:0)

在VB中:DirectCast(WebBrowser1,Control).Enabled = False