簡體   English   中英

限制文本框僅在Windows 8應用商店中接受數字和字母

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM