C# c语言中的用户控件验证#

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

在我的UserControl中,我有一个TextBox,它不是从TextBox继承的,我正在做一个

数字验证(仅允许数字)

在表单中,我编写以下代码

 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之间建立一些链接……或者您可以编写一个类来捕获这些事件,并使表单继承这个类。