1

在我的用户控件中,我有一个不是从 TextBox 继承的 TextBox,我正在做一个

数字验证(仅允许数字)

public delegate void usercontrolError(string message);
    public event usercontrolError onerror;

 Private void txtLocl_KeyPress(object sender, KeyPressEventArgs e)
{
    if(e.KeyChar != '\b')
    {
        if(!char.IsDigit(e.KeyChar))
        {
        e.Handled=true;
        }
        else
       {
         onerror.Invoke("Enter Digits Only");
       }
    }
}

在表格中我写了以下代码

 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 将起作用。

4

1 回答 1

3

你可以触发一个事件:

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...
}
于 2013-03-07T13:22:44.573 回答