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

C# 僅接受數字輸入的控制項 (一) 方案總覽

     編輯:關於C語言

背景

在 MFC 中,CEdit 可透過設定 ES_NUMBER 風格限制只接受數字輸入。但在 .NET 中,TextBox 沒有內建屬性或方法直接實現此功能。解決此問題有多種方案:

方案比較

方案說明優點缺點
繼承 TextBox 覆寫 CreateParams 加入 ES_NUMBER 在 CreateParams 的 Style 加入 ES_NUMBER 標誌,利用 Windows 原生編輯控制項行為。 最省力,行為與原生一致。 無法處理貼上非數字字串;擴充性有限。
監聽 KeyDown 事件自行驗證 在 KeyDown 中攔截非數字按鍵。 可自訂規則(如允許負數、十六進位)。 無法攔截貼上操作;需自行處理邊界情況。
使用第三方 TextBox 衍生控制項 採用社群成熟元件,如 CodeProject 上的 NumericTextBox、AlphanumericTextBox 等。 功能完善,節省開發時間。 引入外部依賴;需評估授權與維護狀態。
使用 MaskedTextBox 設定 Mask 屬性定義輸入格式(如 "999,999.00")。 內建格式化、提示字元、驗證事件;設計師支援完整。 輸入體驗與純 TextBox 不同;遮罩字元固定顯示。
使用 NumericUpDown 改用內建數值調整控制項,含上下按鈕、範圍限制、千分位分隔。 最直接的數值輸入方案;功能豐富、無需驗證邏輯。 外觀與 TextBox 差異大;不適用需自由文本編輯的場景。

推薦資源

選擇建議

  • 需求單純、只接受正整數:繼承 TextBox 加 ES_NUMBER 最快。
  • 需支援負數、小數、特定格式:MaskedTextBox 或 NumericUpDown 更適合。
  • 追求完整體驗且不想造輪子:採用成熟第三方元件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved