有些时候我们要限制TextBox的输入 ,比如age telephone等字段,故我们要在其某些事件里处理,如果那样的话下次再遇到此类情况我们又的重复操作,在此我们对其进行扩展使其只可以接受 Number输入,这里我们override 其WndProc 方法。
1. 建立一个Bank Solution 添加一个Class Library Project named NumberTextControl
2. 右键 References 选择Add Reference 添加 System.Windows.Forms 命名空间
3. override WndProc 方法, 代码如下:
namespace NumberTextControl
{
public class NumberControl : TextBox
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0102 && !Char.IsControl((char)m.WParam))
{
if (Char.IsNumber((char)m.WParam))
{
base.WndProc(ref m);
}
return;
}
base.WndProc(ref m);
}
}
}
{
public class NumberControl : TextBox
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0102 && !Char.IsControl((char)m.WParam))
{
if (Char.IsNumber((char)m.WParam))
{
base.WndProc(ref m);
}
return;
}
base.WndProc(ref m);
}
}
}
4. Test Project
再给Solution 添加一个 Windows Application Project Named NumberFormTest
拖我们刚创建的NumberControl 在 Fom1上 再拖一个TextBox 控件到Form1上 Run Project Testing 。
好了我们的扩展TextBox 到此就完了, 怎么样 还行吧 。原代码:NumberTextBox