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();