簡體   English   中英

具有用戶輸入驗證的KeyDown事件

[英]KeyDown event with user input validation

在下面的代碼中,我試圖僅獲取十進制值。 但文本字段輸入來自不同的字符串。 需要驗證數字和退格鍵,刪除密鑰

if ((e.KeyValue >= 48 && e.KeyValue <= 57) || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9) && (textBox1.Text.Length < textBox1.MaxLength))
{
    if (e.KeyCode != Keys.Delete && e.KeyCode != Keys.Back)
    {
        if (e.KeyValue >= 48 && e.KeyValue <= 57)
        {
            enteredNumber = e.KeyData.ToString();
        }
        else
        {
            enteredNumber = e.KeyData.ToString().Substring(0, 1);
        }
    }
    textBox1.Text = textBox1.Text + enteredNumber;
}

如果我在文本框中輸入1,則iam在文本框中輸入其ascii值149,因為它在文本框中附加了49-ascii值1。請問如何解決此問題?

明確說明您的問題。 假設您想限制用戶的輸入以便只允許用戶輸入數字 (“ 0” ..“ 9”),則可以執行以下操作:

  private void myTextbox_KeyPress(object sender, KeyPressEventArgs e) {
    if (Char.IsDigit(e.KeyChar))
      return;
    else if (e.KeyChar < ' ') // <- I suggest that you allow user to press ESC, TAB etc.
      return;

    // Other keys are forbidden
    e.Handled = true;
  }

PS記住,但是,該用戶可以粘貼一些不正確的內容,以防止您可以使用TextChanged事件:

private void myTextbox_TextChanged(object sender, EventArgs e) {
  if (!Regex.IsMatch(myTextbox.Text, @"^\d*$")) {
    // User's trying to PASTE something wrong from the Clipboard
    // Let's, for instance, remove his/her input in that case:
    myTextbox.Text = "";
  }
}

暫無
暫無

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

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