2014-03-19 235 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 
    } 
}