【问题标题】:Using Read-Only Fields in a C# WebBrowser在 C# WebBrowser 中使用只读字段
【发布时间】:2012-06-12 16:37:32
【问题描述】:

我目前在 C# WinForms 应用程序中使用 WebBrowser 控件,并尝试控制该控件呈现的一些可变性。

基本上,我的用户登录到我的应用程序提供的单独 UI,然后显示 WebBrowser 控件,导航到预定的登录 URL,然后自动填充该页面上的用户名和密码字段。

但是,为了防止此 WebBrowser 控件出现不可预知的行为,我希望在自动填充这些用户名和密码文本框后将其设为只读。本质上,我希望用户看到已经为他们填写的浏览器页面,并且无法编辑。 (这样任何身份验证错误都可以由我的应用程序而不是浏览器来处理。)

我目前用来填充文本字段并使它们只读的代码如下:

webBrowser1.Document.GetElementById("username").InnerText = username;
webBrowser1.Document.GetElementById("password").InnerText = password;
webBrowser1.Document.GetElementById("username").Enabled = false;
webBrowser1.Document.GetElementById("password").Enabled = false;

不幸的是,当我尝试将字段设置为只读时,身份验证服务器就像未填写密码字段一样,并在单击“提交”按钮后提示用户再次填写。这是预期的行为吗?如果是,我可以尝试哪些其他方法来阻止用户更改浏览器自动填充的凭据?

【问题讨论】:

    标签: c# webbrowser-control


    【解决方案1】:

    试着让他们readonly:

    webBrowser1.Document.GetElementById("username").SetAttribute("readonly", "readonly");        
    webBrowser1.Document.GetElementById("password").SetAttribute("readonly", "readonly");
    

    【讨论】:

    • 谢谢,成功了!看起来禁用密码表单会使它变灰,阻止文本选择,并阻止它被发布,而将其设置为“只读”允许文本选择,但在仍然正确发布时禁用编辑。
    【解决方案2】:

    您为什么不创建一个如this article 所示的透明面板,它将放置在 webbrowser-control 的顶部:

    /// <summary>
        /// A transparent control.
        /// </summary>
        public class TransparentPanel : Panel
        {
            public TransparentPanel()
            {
            }
    
            protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams createParams = base.CreateParams;
                    createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
                    return createParams;
                }
            }
    
            protected override void OnPaintBackground(PaintEventArgs e)
            {
                // Do not paint background.
            }
        }
    

    这将阻止用户修改值。

    您可以根据需要显示/隐藏此面板,甚至可以根据需要扩展以捕获鼠标点击位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-29
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 2011-10-10
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多