2011-06-20 100 views
0

我有一些代碼,是爲了檢查某個字符的文本框,但由於某種原因,我有「KeyChar」和「已處理」的部分代碼的問題:文本框驗證表單

private void textBox5_Validating(object sender, CancelEventArgs e) 
{ 
    string allowedCharacterSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.\b\n"; 

    if (allowedCharacterSet.Contains(e.KeyChar.ToString())) 
    { 
     if (e.KeyChar.ToString() == "." 
      && textBox5.Text.Contains(".")) 
     { 
      e.Handled = true; 
     } 
    } 
    else 
    { 
     e.Handled = true; 
    } 

} 

.............

Error 2 'System.ComponentModel.CancelEventArgs' does not contain a definition for 'KeyChar' and no extension method 'KeyChar' accepting a first argument of type 'System.ComponentModel.CancelEventArgs' could be found (are you missing a using directive or an assembly reference?) D:\test\Form1.cs 602 48 App 
+1

沒有物業類型上名爲CancelEventArgs KeyChar。 –

+0

你爲什麼要問另一個問題,而不是修復你的原始問題:http://stackoverflow.com/questions/6414699/c-using-tryparseexact-with-windowsforms-textbox ?? –

回答

0

如何使用正則表達式來代替?

private void TextBox5_Validating(object sender, System.EventArgs e) 
{ 
    String AllowedChars = @"^a-zA-Z0-9.$"; 
    if(Regex.IsMatch(TextBox5.Text, AllowedChars)) 
    { 
     e.Handled = true; 
    } 
    else 
    { 
     e.Handled = false; 
    } 
} 

或者沿着這些線路的東西....

2

正如錯誤說,存在CancelEventArgs沒有KeyChar財產。

要麼你必須切換到文本框的KeyPress事件(其中有KeyChar財產在它的事件參數),或在Validating事件考慮用字符串作爲一個整體(在同一時間,而不是一個字符)

0

嘗試使用的KeyPressEventArgs e代替CancelEventArgs e

http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.aspx

+0

從事件處理程序的定義中可以看出他正在使用驗證事件。簽名必須匹配。他不能在那裏使用KeyPressEventArgs。 –

+0

當然,他將不得不使用不同的偶數處理程序。像TextBox_KeyDown(對象發件人,KeyPressEventArgs e) –

0

嘗試KeyPress事件來代替。這樣可以防止用戶輸入您不想要的信件(通過設置e.Handled = true)。您仍然希望使用驗證來確保它們不會從剪貼板粘貼一些不良數據。