C# WinForm登陸表單 密碼輸入框屏蔽右鍵、複製、粘貼

來源:互聯網
上載者:User

winform 程式寫的登陸密碼框設計:

 

 

----------this.textBox1.ResetText();相當於this.textBox1.Text="";this.textBox1.Focus();

密碼文本狂的輸入限制主要也集中於以下兩個問題:

一、密碼長度的輸入限制

這個和使用者名稱的輸入限制一樣,直接更改txtPassword MaxLength的屬性即可,我們這裡設為16

二、密碼的顯示方式

直接更改txtPassword 的PasswordChar的屬性,一般都設為"*".

三、密碼文字框不能粘貼、複製和屏蔽右鍵

這是一個痛點,我們使用的方法是寫一個新類繼承textBox,並重寫他的WndProc方法,通過監聽訊息ID來處理

具體實現步驟:

建立一個類,取名為TextBox.cs,代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace frmLogin
{
    public class TextBoxEx : System.Windows.Forms.TextBox
    {
        //
        //建構函式預設的
        //

        protected override void WndProc(ref   Message m)
        {
            if (m.Msg != 0x007B && m.Msg != 0x0301 && m.Msg != 0x0302)
            {
                base.WndProc(ref m);
            }
        }

    } 
}

 

0x007B:滑鼠右鍵 message ID

0x0301:複製 (包括ctrl+c) message ID (其實這個判斷不要,因為設定textbox的PasswordChar屬性 實際上已經屏蔽了複製功能)

0x0302:粘貼(包括ctrl+v) message ID

更多的message ID 可以參考http://liuhao-27.blog.163.com/blog/static/115851126200941425617778/

或查閱API手冊

當然,在這裡的我們的工作還沒有結束,我們需要在Login.Designer.cs中將txtPassword引用這個新的對象,

this.txtPassword = new System.Windows.Forms.TextBox();

改為:

this.txtPassword = new frmLogin.TextBoxEx();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.