首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# TextBox KeyPress 事件實現數字輸入限制

     編輯:關於C語言

需求場景

限制文本框僅允許輸入數字,非數字字符顯示於窗體標題欄,文本框不顯示。

核心代碼

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
    // 允許退格鍵 (ASCII 8) 與數字字符
    if (e.KeyChar != 8 && !char.IsDigit(e.KeyChar))
    {
        this.Text = e.KeyChar.ToString(); // 顯示在標題欄
        e.Handled = true;                 // 標記為已處理,阻止字符進入文本框
    }
}

關鍵點解析

  • KeyPressEventArgs.KeyChar:獲取按鍵對應的字符(非鍵碼)
  • char.IsDigit():判斷是否為數字字符(0-9)
  • e.Handled = true:取消鍵盤事件繼續傳播,字符不會輸入控件
  • 退格鍵 (ASCII 8) 必須顯式放行,否則無法刪除

擴展:更完整的數字輸入控制

private void txtNumber_KeyPress(object sender, KeyPressEventArgs e)
{
    // 允許:控制鍵(退格、刪除等)、數字、小數點(僅一個)、負號(僅首位)
    if (char.IsControl(e.KeyChar)) return;
    
    if (char.IsDigit(e.KeyChar)) return;
    
    var txt = sender as TextBox;
    
    // 小數點控制
    if (e.KeyChar == '.' && !txt.Text.Contains(\".\") && txt.SelectionStart > 0)
        return;
    
    // 負號控制
    if (e.KeyChar == '-' && txt.SelectionStart == 0 && !txt.Text.StartsWith(\"-\"))
        return;
    
    e.Handled = true; // 其他全部攔截
}

進階建議

  • KeyPress 適合字符級過濾;KeyDown/KeyUp 適合功能鍵、組合鍵處理
  • 生產環境建議結合 Validating 事件做最終驗證,防止粘貼繞過
  • 考慮使用 MaskedTextBox 或自定義控件封裝復用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved