2015-05-19 62 views
0

我在我的Windows窗體應用程序有一個文本框,我嘗試使用下面的條件,看它們是否匹配:如何驗證一個WinForm文本框

Can only enter A-F(a-f) and 0-9 
Backspace/Delete/Arrow keys are allowed 

我有以下的代碼隱藏(默認文本是FFFFFF的形式負載):

private void tbHex_TextChanged(object sender, EventArgs e) 
{ 
    Regex rx = new Regex(@"^[a-fA-F0-9"); 
    MatchCollection mc = rx.Matches(tbHex.Text); 
    if (mc.Count > 0) //if anything other than what is asked is entered... 
    { 
     MessageBox.Show("NO!"); 
    } 
} 

當表單負荷是發生了什麼,我顯示的「NO!」消息框。

我該如何修改,以便用戶只能輸入有效的字符/鍵,並且在粘貼到文本框中時也進行相同的驗證以及按字符輸入字符。

+1

嘗試使用['MaskedTextBox'](https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox%28v=vs.110%29.aspx)而不是' TextBox'。 –

+1

是否缺少']'('@「^ [a-fA-F0-9」') – Han

+0

這是一個UI噩夢。更好地抑制任何無效字符而不是用消息框擊中用戶。看看右邊的很多例子---> – TaW

回答

1

當文本最初設置時,文本更改發生在表單加載中。它也會觸發每個字符的擊鍵。如果您只希望它在用戶更改文本後才觸發,則可以使用諸如ValidatingValidated之類的事件。