2011-12-18 76 views
0

我有一个动态创建的网格视图中的文本框。我们可以作为文本访问用户输入,但是如何检查文本是整数类型还是字符串类型?如何检查数据类型

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访问用户输入的文本框。
如何检查输入参数的类型是否为整数?

+1

调查['TryParse'方法(http://msdn.microsoft.com/en-us/library/c846ws90.aspx)。这会告诉你一个字符串值是否可以转换为数字。在java中有 – 2011-12-18 15:00:50

+0

你有instanceof关键字来检查对象类型。例如: - Obj instanceof Integer ...你如何检查C#中的对象类型 – Aaraadhana 2011-12-18 15:04:42

回答

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 controlMaskedTextBox control。这些功能可以让您防止用户首先输入无效输入,这比事后显示错误更方便用户使用。


在回答您的评论:

在Java中,你必须的instanceof关键字来检查对象类型。如: - 的OBJ的instanceof整数...你如何检查的对象类型在C#

C#有typeof关键字,但是这不会帮助你在这里。问题是,您检查的对象类型String的一个实例。 Text属性TextBox总是返回String类型的对象。这不是VB 6:这里没有Variants。你要检查的是String的值是否可以将转换成为等价的积分表示。

0
int intNumber;  
bool result=int.TryParse(txt.Text, out intNumber) 

如果字符串(文本框的值)包含非数字字符或数字值过大或过小对你指定的TryParse返回false特定类型和设置为零的输出参数。否则,它返回true并将out参数设置为字符串的数值。

下面以实例的MSDN链接:http://msdn.microsoft.com/en-us/library/bb384043.aspx

0

我用这个:

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"; 

     } 
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; 

}