簡體   English   中英

如何創建一個只接受數字的文本框和一個只接受WPF字母的文本框?

[英]How to create a textbox that only accepts numbers and one that only accepts letters in WPF?

我想知道如何創建一個文本框,只允許用戶鍵入數字,一個允許數字和一個完整停止,一個只允許用戶鍵入字母?

我在Windows窗體中使用了這段代碼:

private void YearText_KeyPress(object sender, KeyPressEventArgs e) //Textbox only accepts numbers
{
    char ch = e.KeyChar;
    if (!Char.IsDigit(ch) && ch != 8 && ch != 13)
    {
        e.Handled = true;
    }
}

private void NameText_KeyPress(object sender, KeyPressEventArgs e) //Textbox only accepts letters
{
    if (!char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar) && !char.IsWhiteSpace(e.KeyChar))
        e.Handled = true;
}

private void ResellPriceText_KeyPress(object sender, KeyPressEventArgs e) //Textbox that allows only numbers and fullstops
{
    if (!char.IsControl(e.KeyChar)
        && !char.IsDigit(e.KeyChar)
        && e.KeyChar != '.')
    {
        e.Handled = true;
    }

    // only allow one decimal point
    if (e.KeyChar == '.'
        && (sender as TextBox).Text.IndexOf('.') > -1)
    {
        e.Handled = true;
    }
}

但我很快發現WPF無法做到這一點。 我不喜歡粘貼字母/數字的能力。

這可以在WPF中完成,事實上你甚至可以用非常相似的基於事件處理程序的代碼來完成它,但是,不要這樣 - 這是一個糟糕的用戶體驗。 這將防止用戶在意外包含周圍空間時進行復制和粘貼,並防止輸入科學數字,例如100e3。

而是使用驗證(在修剪的輸入上)並防止用戶在驗證失敗時繼續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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