屏蔽TextBox控件上的粘贴功能-C#学习进阶

实例说明

当平台进行注册时,都需要填写用户名和登录密码。在输入登录密码时,需要重复输入一次。在重复输入文本框中,应该禁用粘贴功能,防止用户密码输入错误的情况。本实例可以实现这个功能,实例运行结果如图:

屏蔽TextBox控件上的粘贴功能-C#学习进阶

技术要点

本实例主要用到自定义类CustomTextBoxGroup,在该类的构造方法中,对控件的位置和大小进行设定。在处理屏蔽粘贴的消息时用到方法WndProc。

实现过程

(1)创建一个项目,将其命名为ShieldPasteFunction,修改默认窗体为ShieldPasteFunction。

(2)主要程序代码。

本程序在加载窗体时,声明一个自定义类CustomTextBoxGroup的对象,并为其指定父容器,然后在当前窗体中添加该控件。代码如下:

TextBox NoStiky = new CustomTextBoxGroup();                    //声明一个自定义类CustomTextBoxGroup的对象
private void ShieldPasteFunction_Load(object sender,EventArgs e)
{
    this.NoStiky.Parent = this;                                 //设定自定义控件的父容器为当前窗口
    this.Controls.Add(this.NoStiky);                        //在当前窗体中添加自定义控件
}

在自定义类CustomTextBoxGroup的构造函数中,定义控件的位置和大小。代码如下:

public CustomTextBoxGroup()

{

    this.Top = 63;                           //设定自定义控件上边缘与其容器的工作区上边缘之间的距离

    this.Left = 105;                         //设定自定义控件左边缘与其容器的工作区左边缘之间的距离

    this.Width = 178;                        //设定自定义控件的宽度

    this.Height = 50;                          //设定自定义控件的高度

}

重载Windows处理消息的函数WndProc,截获有关粘贴的信息进行屏蔽。代码如下:

protected override void WndProc(ref Message m)
{
    const int WM_RBUTTONDOWN = 0x0204;                     //该变量表示鼠标右键的信息
    const int WM_GETTEXT = 0x000d;    //该变量表示从文本框中获取文本的信息
    const int WM_CONTEXTMENU = 0x007B;                     //该变量表示右键菜单的信息
    const int WM_PASTE = 0x0302;         //该变量表示有关粘贴的信息
    //当当前处理的信息为鼠标右键、从文本框中获取文本、右键菜单以及粘贴信息时
if(m.Msg == WM_RBUTTONDOWN || m.Msg == WM_GETTEXT || m.Msg == WM_CONTEXTMENU || m.Msg == WM_PASTE)                                   
  {
        return;                               //直接返回,不进行处理
    }
    base.WndProc(ref m);                 //处理下一条信息
}