使用正則表達式進行數據有效性校驗的TextBox控件
2024-07-21 02:23:50
供稿:網友
//導入程序使用的.net類庫
using system;
using system.drawing;
using system.windows.forms;
using system.text.regularexpressions;
//命名空間regexeditor,以后將繼續擴充....
namespace regexeditor
{
/** regextextbox繼承自textbox控件
* 能夠通過正則表達式對數據進行有效性校驗
*/
public class regextextbox : system.windows.forms.textbox
{
private string strregex;//用于校驗的正則表達式
private string strverifyerror;//校驗錯誤的提示
private bool bisverifysuccess;//是否檢驗成功
private bool bisdisplayerror;//是否顯示錯誤
private bool btoverify;//是否進行校驗
//屬性:用于校驗的正則表達式
public string regexstring
{
get
{
return strregex;
}
set
{
strregex = value;
}
}
//屬性:檢驗錯誤的提示
public string verifyerrorstring
{
get
{
return strverifyerror;
}
set
{
strverifyerror = value;
}
}
//屬性:是否檢驗成功
public bool isverifysuccess
{
get
{
return bisverifysuccess;
}
set
{
bisverifysuccess = value;
}
}
//屬性:是否顯示校驗錯誤
public bool isdisplayerror
{
get
{
return bisdisplayerror;
}
set
{
bisdisplayerror = value;
}
}
public bool toverify
{
get
{
return btoverify;
}
set
{
btoverify = value;
}
}
//構造函數
public regextextbox()
{
initializecomponent();
}
//初始化變量以及控件屬性
void initializecomponent()
{
regexstring = "";
verifyerrorstring = "";
isverifysuccess = true;
isdisplayerror = false;
toverify = false;
this.name = "regextextbox";
this.validating += new system.componentmodel.canceleventhandler(this.onvalidatingdata);
}
//私有過程:校驗數據
private bool verifydata()
{
isverifysuccess = regex.ismatch(this.text,regexstring);
return isverifysuccess;
}
//事件處理函數:校驗數據
private void onvalidatingdata(object sender, system.componentmodel.canceleventargs e)
{
if(!toverify)//不需要校驗直接退出
{
e.cancel = false;
return;
}
if(!verifydata())//校驗不正確..
{
if(this.isdisplayerror)//要求顯示校驗錯誤提示..
{
messagebox.show(verifyerrorstring,"警告:");
}
else//要求不顯示校驗錯誤提示..
{
this.selectall();
}//end if
e.cancel = true;
}
else//校驗正確..
{
e.cancel = false;
}//end if
}
}//end class
}//end namespace