我有一个电话号码,我希望将其存储为字符串。
我在使用
中读到了这个txtHomePhone.Text
我认为我需要的是某种数字,但无法使其正常工作
if (txtHomePhone.Text == //something.IsNumeric)
{
//Display error
}
else
{
//Carry on with the rest of program ie. Add Phone number to program.
}
仅允许输入数值的最佳方法是什么?
答案 0 :(得分:8)
由于txtHomePhone
代表TextBox
,您可以使用KeyPress
事件接受您想要允许的字符,并拒绝txtHomePhone
中您不希望允许的内容}
示例强>
public Form1()
{
InitializeComponent();
txtHomePhone.KeyPress += new KeyPressEventHandler(txtHomePhone_KeyPress);
}
private void txtHomePhone_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == '') //The character represents a backspace
{
e.Handled = false; //Do not reject the input
}
else
{
e.Handled = true; //Reject the input
}
}
注意:The following character (which is not visible) represents a backspace.
注意:您可以始终使用e.Handled
允许或禁止特定字符。
注意:如果您想使用 -
, ,您可以创建一个条件语句,
(
或 )
只有一次。如果您希望允许这些字符输入特定位置,我建议您使用正则表达式。
示例强>
if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == '') //The character represents a backspace
{
e.Handled = false; //Do not reject the input
}
else
{
if (e.KeyChar == ')' && !txtHomePhone.Text.Contains(")"))
{
e.Handled = false; //Do not reject the input
}
else if (e.KeyChar == '(' && !txtHomePhone.Text.Contains("("))
{
e.Handled = false; //Do not reject the input
}
else if (e.KeyChar == '-' && !textBox1.Text.Contains("-"))
{
e.Handled = false; //Do not reject the input
}
else if (e.KeyChar == ' ' && !txtHomePhone.Text.Contains(" "))
{
e.Handled = false; //Do not reject the input
}
else
{
e.Handled = true;
}
}
谢谢, 我希望你觉得这很有帮助:)
答案 1 :(得分:7)
我假设您在此处使用Windows窗体,请查看MaskedTextBox。它允许您指定字符的输入掩码。
txtHomePhone.Mask = "##### ### ###";
由于这允许您限制输入值,因此可以安全地将值解析为整数。
注意:如果您使用的是WPF,我认为基础库中没有MaskedTextBox,但NuGet上有可用的扩展,它们可能提供类似的功能。
答案 2 :(得分:4)
要检查是否输入了数值,您可以使用Integer.TryParse
int num;
bool isNum = Integer.TryParse(txtHomePhone.Text.Trim(), out num);
if (!isNum)
//Display error
else
//Carry on with the rest of program ie. Add Phone number to program.
但请记住,电话号码不一定只是数字。有关蒙面文本框,请参阅Trevor Pilley的答案。
答案 3 :(得分:3)
试试这个
if (!txtHomePhone.Text.All(c=> Char.IsNumber(c)))
{
//Display error
}
else
{
//Carry on with the rest of program ie. Add Phone number to program.
}
答案 4 :(得分:0)
通常我会使用Integer.TryParse作为davenewza推荐,但另一种方法是使用C#中的VisualBasic IsNumeric函数。
添加对Microsoft.VisualBasic.dll文件的引用,然后使用以下代码。
if (Microsoft.VisualBasic.Information.IsNumeric(txtHomePhone.Text))
{
//Display error
}
else
{
//Carry on with the rest of program ie. Add Phone number to program.
}
答案 5 :(得分:0)
我发现这样做的最好方法是只允许用户在文本框中输入数字键,感谢您的帮助。