我的表单有六到七个文本框。少数文本框只需要接受数字字符,即0-9,十进制数和+或 -
我处理了文本框按键事件
private void textBox1_KeyPress(object sender,KeyPressEventArgs e)
{
if(!char.IsControl(e.KeyChar)
&安培;&安培; !char.IsDigit(e.KeyChar)
&安培;&安培; e.KeyChar!='。'')
{
e.Handled = true;
}
}
现在我必须为所有文本框编写相同的代码,我觉得它是减少的。 我创建了一个从TextBox派生的新类MyTextBox,并将上面的代码添加到其中。
在设计器模式下,我拖放文本框控件..转到Designer.cs文件并将行更改为
private MyTextbox m_txtName = new MytextBox();
现在的问题是,如果我添加一个新按钮或任何控件到表单,则更改/更新designer.cs文件...并且aboe行更改为普通TextBox,我必须每次都更换它......我可以避免这个吗?
注意:我不想使用MasktextBox或numericKeydown控件。
答案 0 :(得分:1)
您可以将自己的控件添加到工具箱中,然后将其放在表单设计器上。
答案 1 :(得分:1)
一个很好的例子,你会发现here。
关于设计师。当您重建项目时,您将(应该)将您的textBox视为工具箱中的自定义组件。拖放该组件而不是您的古代文本框。
如果没有,您需要查找MyTextBox1的所有引用,因为您需要在至少2个位置更改它:声明和创建(MyTextBox mtb;
和mtb = new MyTextBox();
)
答案 2 :(得分:0)
使用事件KeyPress
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int isNumber = 0;
e.Handled = !int.TryParse(e.KeyChar != (char)Keys.Back ? e.KeyChar.ToString() : "0", out isNumber);
}