只允許輸入數字的TextBox控件


 

【實例說明】


 可以在TextBox控件中輕松地輸入文本信息,輸入的文本信息可以包括字母、數字、漢字等。

 如果需要用戶在TextBox控件中填寫年齡信息,那么年齡信息應當只允許數字,怎么限制用戶輸入其他信息呢?

 本實例中將會演如何只允許用戶在TextBox控件中輸入數字,當按下其他非數字按鈕時便會提示:

 

 這個例子很簡單的,限制輸入,直接在KeyPress事件里驗證就行了。下面說了兩種方式:


【關鍵技術】
 本實例重點在於向讀者介紹怎樣通過Char結構的isDigit方法判斷用戶在TextBox控件中輸入的字符是否為數字,以及使用按鍵對應的Ascii值判斷是否是指定范圍的按鍵等等。下面對本實例用到的關鍵技術進行詳細的講解。

 TextBox控件的KeyPress事件包含兩個參數,即sender事件源和包含事件數據的e,

 通過e的KeyChar屬性可以獲取用戶按下鍵盤的按鍵,通過e的Handler屬性可以設置是否處理過用戶按鍵的事件。
 通過e.KeyChar轉成int的值可以獲取到當前用戶按下鍵盤的按鍵對應的ASCII值。

 (1)KeyChar屬性
   該屬性用於獲取或設置按下鍵對應的字符,語法格式如下:

1 public char KeyChar{ get; set; }

   參數說明
   屬性值:Char結構,餓到按下鍵對應的字符。
 (2)Handled屬性
   該屬性用來獲取或設置一個值,該值只是是否處理過System.Windows.Forms.Control.KeyPress事件,語法格式如下:

1 public bool Handled{ get; set; }

   參數說明
   屬性值:布爾類型,只是是否處理過KeyPress事件。
   使用Char結構的isDigit方法可以判斷指定字符是否為十進制數字,下面對其進行詳細說明。
 (3)isDigit方法
   該方法只是某個字符是否屬於十進制數字類別,語法格式如下:

1 public static bool IsDigit(char c)

   參數說明
   c:一個字符
   返回值:返回布爾值,如果字符c是是兼職數字則為true,否則為false。

說明:通過KeyPressEventArgs的Handled設置為true,可以取消KeyPress事件,這樣可以取消用戶在TextBox按鍵的值。

【設計過程】
 (1)打開Visual Studio,新建WinForm應用程序,命名為OnlyDigit。
 (2)更改默認窗體Form1的Name屬性為FrmMain,向窗體中添加一個TextBox文本框控件,用於演示只允許向文本框中輸入數字。
 (3)程序的主要代碼如下:

1 // 在當前輸入框中按下並彈起按鍵的事件
2 private void txt_Input_KeyPress(object sender, KeyPressEventArgs e)
3 {
4      if (!char.IsDigit(e.KeyChar))   // 如果當前輸入的不是數字
5      {
6           MessageBox.Show("請輸入數字!", "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Information);   // 給出錯誤提示
7           e.Handled = true;   // 取消當前操作,即取消在控件中現實該字符的操作
8      }
9 }

 上面這段代碼表示,使用char的IsDigit方法判斷傳進來的char字符是不是一個十進制的數字、

 當你運行這段代碼會發現:我們按下非數字的字母或符號的時候,確實實現了這個效果、
 但是、當你按下回車、退格、Ctrl等等這些按鍵的時候、同樣認為是非數字被攔截了、

 所以、這時就需要使用ASCII值判斷數字范圍了,因此,另一種寫法:

 1 // 在當前輸入框中按下並彈起按鍵的事件
 2 private void txt_Input_KeyPress(object sender, KeyPressEventArgs e)
 3 {
 4      int keyAsciiValue = Convert.ToInt32(e.KeyChar); // 獲取當前按下的按鍵對應的ASCII值
 5 
 6      // 如果當前ASCII值范圍不在48-57之間、也就是0-9對應的ASCII值之間
 7      // 或者ASCII的值不是8[退格鍵]或13[回車鍵]時
 8      if (!(((keyAsciiValue >= 48 && keyAsciiValue <= 57) || (keyAsciiValue == 8 || keyAsciiValue == 13))))
 9      {   //如果上面的驗證結果是false
10           MessageBox.Show("請輸入數字!", "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Information);   // 給出錯誤提示
11           e.Handled = true;
12      }
13 
14      //if (!char.IsDigit(e.KeyChar))   // 如果當前輸入的不是數字
15      //{
16       //    MessageBox.Show("請輸入數字!", "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Information);     // 給出錯誤提示
17       //    e.Handled = true;   // 取消當前操作,即取消在控件中現實該字符的操作
18      //}
19 }

 

 我這里不能插附件,要源碼的話留言吧,呵呵。

 

 

 

【來自:[LonelyShadow 博客] http://www.cnblogs.com/LonelyShadow

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM