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

技术要点
本实例主要用到自定义类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); //处理下一条信息
}