C# c语言中的用户控件验证#
在我的UserControl中,我有一个TextBox,它不是从TextBox继承的,我正在做一个 数字验证(仅允许数字) 在表单中,我编写以下代码C# c语言中的用户控件验证#,c#,winforms,user-controls,overriding,errorprovider,C#,Winforms,User Controls,Overriding,Errorprovider,在我的UserControl中,我有一个TextBox,它不是从TextBox继承的,我正在做一个 数字验证(仅允许数字) 在表单中,我编写以下代码 public Form1() { txtLocl.onerror += new ciscontrols.mtbDtTmPk.usercontrolError(mtbDtTmPk1_onerror); } void mtbDtTmPk1_onerror(string message) { epfrm2
public Form1()
{
txtLocl.onerror += new ciscontrols.mtbDtTmPk.usercontrolError(mtbDtTmPk1_onerror);
}
void mtbDtTmPk1_onerror(string message)
{
epfrm2.SetError(mtbDtTmPk1, message);
//throw new NotImplementedException();
}
我以表单的形式编写代码。
现在我不想在表单中编写任何代码。但errorProvider仅为Form1格式。我怎么知道呢。用户无法在Form1中编写任何代码。但Form ErrorProvider将起作用。您可以触发事件:
public delegate void CustomTextBoxError(string message);
public event CustomTextBoxError onError;
private void txtLocl_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar != '\b')
{
if(char.IsDigit(e.KeyChar))
{
e.Handled=true;
}
else
{
if (onError != null)
onError.Invoke("Enter digits only");
}
}
}
private void MyForm_Load(object sender, EventArgs e)
{
myUserControl.onError += new CustomTextBoxError(MyForm_onError);
}
void MyForm_onError(string message)
{
//do anything you want in your form...
}
并以您的形式:
public delegate void CustomTextBoxError(string message);
public event CustomTextBoxError onError;
private void txtLocl_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar != '\b')
{
if(char.IsDigit(e.KeyChar))
{
e.Handled=true;
}
else
{
if (onError != null)
onError.Invoke("Enter digits only");
}
}
}
private void MyForm_Load(object sender, EventArgs e)
{
myUserControl.onError += new CustomTextBoxError(MyForm_onError);
}
void MyForm_onError(string message)
{
//do anything you want in your form...
}
先生,我不想在表单中编写任何代码…可能吗…,但我的表单中有Errorprovider…,Winforms不像asp.net页面那样在子控件中使用groupvalidation。您需要在表单和usercontrol之间建立一些链接……或者您可以编写一个类来捕获这些事件,并使表单继承这个类。