WinForm自定義驗證控件


本文轉載:http://blog.csdn.net/ziyouli/article/details/7583824

此篇博文不錯:http://blog.csdn.net/sony0732/article/details/2502858

  該控件使用的是visual studio2010開發,對TextBox進行了改寫,附帶了驗證功能,不需要開發人員再次對TextBox的內容進行驗證,也不需要在相關的按鈕里寫判斷語句,節省了對內容驗證的時間,下面為大家介紹下控件的功能和用法。

1. 先創建一個項目,在工具欄里點擊鼠標右鍵,彈出菜單中選擇“選擇項”,接着在彈出的窗口中選擇“.net framework組件”面板,點擊下面“瀏覽”按鈕后選中“TzhTechUcLibrary.dll”,點擊確定,這樣就將控件添加到工具欄里了(不要怪我啰嗦哈,要考慮新手可憐):

 

 

2. 在Form1窗體上,添加2個Groupbox控件,7個Label,6個RegexTextBox和2個Button,如圖所示:

3. 分別設置regexTextBox1~5的“驗證”欄屬性為如下圖示:

regexTextBox1(正則表達式為:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*):

 

regexTextBox2(正則表達式為:^[+-]?\d*[.]?\d*$):

 

regexTextBox3(正則表達式為:^[+-]?\d*[.]?\d*$):

 

regexTextBox4(正則表達式為:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*):

 

regexTextBox5(注意,Validate屬性設置為了Customer):

 

regexTextBox6(正則表達式為:^[+-]?\d*[.]?\d*$):

 

4. 雙擊button1,編寫事件:

[csharp]  view plain copy
  1. private void button1_Click(object sender, EventArgs e)  
  2. {  
  3.     MessageBox.Show("button1所有文本框通過驗證");  
  4. }  


button2事件:

[csharp]  view plain copy
  1. private void button2_Click(object sender, EventArgs e)  
  2. {  
  3.     MessageBox.Show("button2所有文本框通過驗證");  
  4. }  


regexTextBox5切換到事件面板,找到“驗證”項,雙擊CustomerValidated:

編寫代碼:

[csharp]  view plain copy
  1. private void regexTextBox5_CustomerValidated(object sender, TzhTechUcLibrary.CustomerEventArgs e)  
  2. {  
  3.     if (e.Value.Length < 6 || e.Value.Length > 16)  
  4.     {  
  5.         e.ErrorMessage = "輸入的字符串長度必須要在6~16位之間";  
  6.         e.Validated = false;  
  7.     }  
  8. }  


到此為止,界面設置全部完成,接下來運行程序查看結果:

點擊button1后產生的結果:

regexTextBox1允許為空,所有沒有輸入則不驗證:

regexTextBox1輸入了不合法的郵箱格式:

regexTextBox3沒有輸入錯誤信息顯示在label7上:

regexTextBox3不滿足正則表達式的情況:

regexTextBox4不允許為空,文本框背景出現警告色:

全部驗證通過后,執行了button1_Click事件:

 

點擊button2產生的效果:

regexTextBox5調用的是自定義驗證事件CustomerValidated進行驗證:

 

該控件的最大優勢在於開發人員無需在對文本框進行任何的驗證,也不用編寫任何代碼進行處理,簡化了代碼,加快開發速度。

 

之前的控件版本有問題,重新修改了一版上傳了,最新下載地址:控件演示下載

 

核心源碼

 

修正了驗證失敗后還會執行按鈕事件的錯誤,添加了顯示樣式Icon,優化部分代碼,並修改了部分錯誤代碼。


免責聲明!

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



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