Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查数据类型_C#_Textbox - Fatal编程技术网

C# 如何检查数据类型

C# 如何检查数据类型,c#,textbox,C#,Textbox,我在网格视图中动态创建了一个文本框。我们可以以文本形式访问用户输入,但如何检查文本是整数类型还是字符串类型 if (tx.Text == "") { tx.Text = Convert.ToString(0); } if (Convert.ToInt32(tx.Text) > max) { MessageBox.Show("Some Message", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);

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

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

int intNumber;    
bool result=int.TryParse(txt.Text, out intNumber)
如果字符串(文本框值)包含非数字字符,或者对于指定的特定类型,数值太大或太小,则TryParse返回false并将out参数设置为零。否则,它将返回true并将out参数设置为字符串的数值

以下是msdn链接和示例:

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

下面是msdn链接,其中有一个示例:

您正在查找的。这将告诉您给定的字符串值是否可以转换为数字。它做到了这一切,没有抛出任何异常

示例代码:

  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.
  }
但是,如果您希望限制文本框的输入范围(即,防止用户输入除数字以外的任何内容),这不是正确的方法

相反,您应该使用不同的控件,例如,或。这些允许您首先防止用户输入无效输入,这比事后显示错误更方便用户


针对你的评论:


在java中,您有instanceof关键字来检查对象类型。例如:-Obj instanceof Integer…如何在C中检查对象类型#

C#有
类型的
关键字,但这对你没有帮助。问题是,您正在检查的对象
String
类型的实例。
TextBox
类的
Text
属性始终返回类型为
String
的对象。这不是VB6:这里没有
变体。您要检查的是该
字符串
值是否可以转换为等效的整数表示形式。

您正在查找。这将告诉您给定的字符串值是否可以转换为数字。它做到了这一切,没有抛出任何异常

示例代码:

  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.
  }
但是,如果您希望限制文本框的输入范围(即,防止用户输入除数字以外的任何内容),这不是正确的方法

相反,您应该使用不同的控件,例如,或。这些允许您首先防止用户输入无效输入,这比事后显示错误更方便用户


针对你的评论:


在java中,您有instanceof关键字来检查对象类型。例如:-Obj instanceof Integer…如何在C中检查对象类型#

C#有
类型的
关键字,但这对你没有帮助。问题是,您正在检查的对象
String
类型的实例。
TextBox
类的
Text
属性始终返回类型为
String
的对象。这不是VB6:这里没有
变体。您要检查的是该
字符串
值是否可以转换为等效的整数表示形式。

我使用以下方法:

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

        }
我用这个:

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

        }

我认为下面的方法更简单。您只需设置一个使用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;

}
private void TextBox\u按键(对象发送者,按键事件参数e)
{

如果((e.KeyChar>='0')&&(e.KeyChar),我认为以下方法更简单。您只需设置一个使用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;

}
private void TextBox\u按键(对象发送者,按键事件参数e)
{

如果((e.KeyChar>='0')&&(e.KeyChar调查。这将告诉您字符串值是否可以转换为数字。在java中,您有instanceof关键字来检查对象类型。例如:-Obj instanceof Integer…如何在C中检查对象类型?调查。这将告诉您字符串值是否可以转换为数字。在java中,您有instanceof Integer要检查对象类型的关键字。例如:-Obj instanceof Integer…如何在C中检查对象类型#