2011-12-18 89 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; 

}