我在动态创建的网格视图中有一个文本框。我们可以作为文本访问用户输入,但是如何检查文本是整数类型还是字符串类型?
if (tx.Text == "")
{
tx.Text = Convert.ToString(0);
}
if (Convert.ToInt32(tx.Text) > max)
{
MessageBox.Show("Some Message", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
tx.Text = Convert.ToString(max);
}
tx
是我们通过tx.Text
从中访问用户输入的文本框
如何检查输入参数的类型是否为整数?
答案 0 :(得分:6)
您正在寻找TryParse
method。这将告诉您是否可以将给定的字符串值转换为数字。它可以做到这一切而不会抛出任何例外。
示例代码:
int number;
bool result = Int32.TryParse(tx.Text, out number);
if (result)
{
// Conversion to a number was successful.
// The number variable contains your value.
}
else
{
// Conversion to a number failed.
// The value entered in the textbox is not numeric.
}
但是如果您希望限制文本框的输入范围(即,阻止用户输入除数字之外的任何内容),这不是正确的方法。
相反,您应该使用其他控件,例如NumericUpDown
control或MaskedTextBox
control。这些允许您防止用户首先输入无效输入,这比事后显示错误更加用户友好。
回应你的评论:
在java中你有instanceof关键字来检查对象类型。例如: - Obj instanceof Integer ...如何在C#中检查对象类型
C#有typeof
个关键字,但这不会对你有所帮助。问题是,您正在检查的对象是类型为String
的实例。 Text
类始终的TextBox
属性返回String
类型的对象。这不是VB 6:这里没有Variants
。您要检查的是String
值是否可以转换到等效的整数表示中。
答案 1 :(得分:1)
我用这个:
private dataType ParseString(string str)
{
bool boolValue;
Int32 intValue;
Int64 bigintValue;
decimal doubleValue;
DateTime dateValue;
// Place checks higher in if-else statement to give higher priority to type.
if (bool.TryParse(str, out boolValue))
return "System_Boolean";
else if (Int32.TryParse(str, out intValue))
return "System_Int32";
else if (Int64.TryParse(str, out bigintValue))
return "System_Int64";
else if (decimal.TryParse(str, out doubleValue))
return "System_Decimal";
else if (DateTime.TryParse(str, out dateValue))
return "System_DateTime";
else return "System_String";
}
答案 2 :(得分:0)
int intNumber;
bool result=int.TryParse(txt.Text, out intNumber)
如果字符串(您的文本框值)包含非数字字符,或者数值对于您指定的特定类型而言太大或太小,TryParse将返回false并将out参数设置为零。否则,它返回true并将out参数设置为字符串的数值。
以下是带有示例的msdn链接:http://msdn.microsoft.com/en-us/library/bb384043.aspx
答案 3 :(得分:0)
我认为以下方法更简单。您只需要设置一个使用textBox检查操作的方法:
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar >= '0') && (e.KeyChar <= '9'))
{
return;
}
if (Char.IsControl(e.KeyChar))
{
if (e.KeyChar == (char)Keys.Enter)
{
Button1.Focus ();
}
}
e.Handled = true;
}