2014-03-19 195 views
0

如何检查用户是否在文本字段中输入了数字?如果他们输入的数据不是文本,我想要显示一个错误消息并循环回来再次输入他们的输入。任何帮助将不胜感激。谢谢。验证用户输入C#

下面的代码:

myCmd.CommandText = "INSERT INTO Guest(Guest_First_Name, Guest_Surname, Guest_Address, Guest_Postcode, Guest_Telephone, [Guest_E-mail])" + "VALUES(@Fname, @Sname, @Address, @Postcode, @Telephone, @Email)"; 

     myCmd.Parameters.Add("@Fname", OleDbType.Char).Value = firstName.Text; 
     myCmd.Parameters.Add("@Sname", OleDbType.Char).Value = surname.Text; 
     myCmd.Parameters.Add("@Address", OleDbType.Char).Value = address.Text; 
     myCmd.Parameters.Add("@Postcode", OleDbType.Char).Value = postcode.Text; 
     myCmd.Parameters.Add("@Telephone", OleDbType.Char).Value = telephone.Text; 
     myCmd.Parameters.Add("@Email", OleDbType.Char).Value = email.Text; 

     connect.Open(); 
     int rowsChanged = myCmd.ExecuteNonQuery(); 
     connect.Close(); 

     if (rowsChanged == 1) 
     { 
      MessageBox.Show("Record Inserted"); 
     } 
     else 
     { 
      MessageBox.Show("Error: Record Not Inserted"); 
     } 
+0

@ Lioyd..Use服务器端验证控件或写按键事件 –

+0

http://msdn.microsoft.com/en-us/ library/system.windows.forms.errorprovider(v = vs.110).aspx –

+0

@Looyd数字不是我认为不能识别为文本的唯一字符。事实上,我认为你需要类似正则表达式来检查'[a-z] [A-Z]'什么的。 – Leron

回答

2

让我们假设文本框是字段的名称。然后,你可以做在C#中的以下内容: -

int num=0; 
if(!(Int32.TryParse(textField,out num))) 
{ 
Console.WriteLine("Error"); 
return; // return an error at this point 
} 

您也可以尝试以下方法(未经测试): -

int num=0; 
if(!(Int32.TryParse(textField,NumberStyles.None,CultureInfo.InvariantCulture,out num))) 
{ 
Console.WriteLine("Error"); 
return; // return an error at this point 
} 

在第一个例子中,的NumberStyles默认为整数。将其更改为无可能会有所帮助。

+0

我不会说所有无法解析为“Int”的都是文本。 – Leron

+0

感谢您的回答,该方法是部分工作..如果我编号,然后一封信,它会接受它,并将其插入数据库中:/我将如何阻止它做到这一点? – Lloyd

+0

你给的是什么输入? – Max

1

可以使用像这样:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    textBox1.Text = string.Concat(textBox1.Text.Where(char.IsLetter)); 
} 

这不会显示任何错误;除了字母以外的任何东西都会被删除。

0
int result; 
if (int.TryParse(input.Text, out result)) 
{ 
    // it's a valid integer => you could use the result variable here 
} 

,或者如果你想在按键验证,

private void txtbox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == '') 
    { 
     e.Handled = false; //Do not reject the input 
    } 
    else 
    { 
     e.Handled = true; //Reject the input 
    } 
}