[英]Restrict textbox to accept numbers and letters only in Windows 8 store app
我是編程新手,我正在嘗試制作一個僅接受字母和數字的文本框。 我一直在尋找解決方案,但找不到我想要的。 到目前為止,這是我所做的:
private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Space)
{
e.Handled = true;
}
var regex = new Regex(@"[^a-zA-Z0-9\s]");
if (regex.IsMatch(e.Key.ToString()))
{
e.Handled = true;
}
}
我可以將數字刪除到正則表達式中,以防止用戶鍵入特殊字符,但這也會限制他們鍵入數字。 此文本框將是Windows 8 store應用程序的一部分,而我正在使用C#。 希望有人能幫助我。 謝謝!
編輯:
我必須放棄限制用戶在文本框中鍵入特殊字符的步驟,因為我離它越來越近了。 我所做的是我使用了第一個代碼,但進行了一些更改。
private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Enter)
{
var regex = new Regex(@"[^a-zA-Z0-9\s]");
if (regex.IsMatch(TB1.Text))
{
t1.Text = "Can't contain special characters.";
}
}
}
我沒有使用“ IsMatch”中的測試按鍵,而是使用了文本框中的文本。 如果文本框中是否存在除數字和字母之外的其他字符,則此if語句將進行過濾,因此我創建了一個文本塊,該文本塊將注釋文本框中有一個特殊字符。
如果要使用Regex ,請使用以下正則表達式進行匹配。
^[a-zA-Z0-9]*$
使用示例:
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString))
{
...
}
我以前的答案是錯誤的,因為我在VirtualKey的工作方式上犯了一個錯誤(它不是char值)。
虛擬鍵具有0 -9的任何數字的定義值,並且小寫A(a)和大寫A(A)具有相同的數字,因此,如果我一開始誤導您的方向,對不起。
if(e.Key >= VirtualKey.Number0 && e.Key <= VirtualKey.Z) e.Handled = false;
此代碼應檢查您的鍵值是否大於或等於Number0(48)的值並且小於或等於Z |。 z(90)。
您可以在此處閱讀有關VirtualKey的更多信息
在文本框的KayPress事件中輸入以下行。 不允許用戶輸入任何字母或數字。 僅允許輸入符號:
e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ? false:true;
樣例代碼:
private void yourTextBoxName_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ?false:true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.