我想让我的表单上的所有文本框只接受代码尽可能少的数字 - C#
I want make all textboxes on my form to accept only numbers with as little code as possible - c#
我正在制作一个相对简单的软件,它有很多文本框,我想要一种方法只允许表单中所有文本框中的数字,希望只有一段代码。我目前使用以下代码只允许一个文本框使用数字,但这意味着为每个文本框重复这些行。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
文本框也位于面板内,以防万一。
创建派生的 DigitsOnly TextBox,实现方法,并用它代替 TextBox。
如果您使用的是 Windows 表单而不是 WPF,则可以使用 MaskedTextBox.
不确定您是否可以在 WPF 中复制该功能,因为您从未使用过它。
正如Darek所说,一个可行的选择是:
Create a derrived DigitsOnlyTextBox, with the method implemented, and use it in place of 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
),您可以在 Form
的设计器视图中轻松完成所有这些操作:
默认处理程序
复制定义处理程序
我正在制作一个相对简单的软件,它有很多文本框,我想要一种方法只允许表单中所有文本框中的数字,希望只有一段代码。我目前使用以下代码只允许一个文本框使用数字,但这意味着为每个文本框重复这些行。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
文本框也位于面板内,以防万一。
创建派生的 DigitsOnly TextBox,实现方法,并用它代替 TextBox。
如果您使用的是 Windows 表单而不是 WPF,则可以使用 MaskedTextBox.
不确定您是否可以在 WPF 中复制该功能,因为您从未使用过它。
正如Darek所说,一个可行的选择是:
Create a derrived DigitsOnlyTextBox, with the method implemented, and use it in place of 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
),您可以在 Form
的设计器视图中轻松完成所有这些操作:
默认处理程序
复制定义处理程序