【发布时间】:2011-01-16 14:54:03
【问题描述】:
如何将掩码放在 win 表单文本框上,以便它只允许数字? 以及它如何适用于其他掩码数据、电话 zip 等。
我正在使用 Visual Studio 2008 C#
谢谢。
【问题讨论】:
如何将掩码放在 win 表单文本框上,以便它只允许数字? 以及它如何适用于其他掩码数据、电话 zip 等。
我正在使用 Visual Studio 2008 C#
谢谢。
【问题讨论】:
您可以使用 MaskedTextBox 控件
http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx
【讨论】:
您想阻止不允许的输入还是在可以继续之前验证输入?
前者可能会使用户在按键时感到困惑,但没有任何反应。通常最好显示他们的按键但显示输入当前无效的警告。例如,设置屏蔽电子邮件地址正则表达式可能也相当复杂。
查看ErrorProvider 以允许用户键入他们想要的内容,但在键入时显示警告。
对于仅允许数字的文本框的第一个建议,您可能还需要考虑NumericUpDown。
【讨论】:
如上所述,使用MaskedTextBox。
也值得使用ErrorProvider。
【讨论】:
使用掩码文本框并分配 MasktextboxId.Mask。
如果你想使用文本框,那么你必须为其编写正则表达式
【讨论】:
控制用户的按键事件,通过不允许任何不需要的字符来屏蔽输入。
只允许带小数的数字:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// allows 0-9, backspace, and decimal
if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 46))
{
e.Handled = true;
return;
}
// checks to make sure only 1 decimal is allowed
if (e.KeyChar == 46)
{
if ((sender as TextBox).Text.IndexOf(e.KeyChar) != -1)
e.Handled = true;
}
}
只允许电话号码值:
private void txtPhone_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= '0' && e.KeyChar <= '9') return;
if (e.KeyChar == '+' || e.KeyChar == '-') return;
if (e.KeyChar == 8) return;
e.Handled = true;
}
【讨论】: