我正在制作一个相对简单的软件,它有很多文本框,我想要一种方法只允许表单中所有文本框中的数字,希望是一段代码。我目前使用以下代码仅允许一个文本框的数字,但这意味着为每个文本框重复这些行。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
文本框也在面板中,这会产生影响。
答案 0 :(得分:2)
使用实现的方法创建一个开源的DigitsOnlyTextBox,并使用它代替TextBoxes。
答案 1 :(得分:1)
正如Darek所说,一个可行的选择是:
使用实现的方法创建一个开源的DigitsOnlyTextBox,并使用它代替TextBoxes
第二个选项是简单地将每个TextBox
指向同一个事件处理程序。例如,在Form.Designer.cs
:
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxNumericOnly_KeyPress);
this.textBox2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxNumericOnly_KeyPress);
this.textBox3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxNumericOnly_KeyPress);
...
然后你的处理程序:
private void textBoxNumericOnly_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
假设您正在使用Visual Studios并且您已经第一次创建了事件处理程序(对于textBox1
),您可以在{{1的设计器视图中轻松完成此操作}}:
默认处理程序
复制Def Handler
答案 2 :(得分:0)
如果您使用的是Windows窗体而非WPF,则可以使用MaskedTextBox。
不确定您是否可以在WPF中复制该功能,但从未使用过它。