簡體   English   中英

格式化文本框以僅接受數字和空格以及加號

[英]Format text box to accept only numbers and white spaces and plus sign

我正在嘗試制作一個只接受數字、空格和加號的text-box

目前我在textbox KeyPressEvent中做了這樣的事情

if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) &&!char.IsWhiteSpace(e.KeyChar))
    {
                e.Handled = true;
    }

我也想接受+

更新

我確實處理了!char.IsSymbol(e.KeyChar)但它也會接受=符號和+

任何幫助!!!

謝謝

對於“輸入期間”控制和驗證控制,您可以進行類似的操作。

但是你的文本框中會有很多東西(1+++ +2 34+),這並不意味着很多......

textBox.KeyDown += (sender, e) =>
                               {
                                   if (!(
                                       //"+
                                       e.KeyCode == Keys.Add || 
                                       //numeric
                                       (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9) || 
                                       //space
                                       e.KeyCode == Keys.Space))
                                   {
                                       e.Handled = true;
                                   }
                               };
textBox.Validating += (sender, eventArgs) =>
                                  {
                                      var regex = new Regex(@"[^0-9\+ ]+");
                                      textBox.Text = regex.Replace(textBox.Text, string.Empty);
                                  };

嚴格來說你可以追加

     && !e.KeyChar == '+' 

根據您的標准,就鍵盤輸入而言,它應該可以工作,但如果目標是只允許數字輸入,.net 控件庫還包含一個可以解決問題的 NumericUpDown 控件。

添加

var reg = new Regex(@"^\\+?(\\d[\\d-. ]+)?(\\([\\d-. ]+\\))?[\\d-. ]+\\d$");

作為正則表達式

這對我來說很好用:

if (!(char.IsLetter(e.KeyChar) && (!char.IsControl(e.KeyChar) 
    && !char.IsDigit(e.KeyChar) && !(e.KeyChar == '.'))
{
    e.Handled = true;
}

我添加了 char.IsControl 是因為它允許您在類型錯誤的情況下使用 Backspace。

暫無
暫無

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

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