在我的UserControl中,我有一个TextBox,它不是从TextBox继承的,我正在做
验证Numerics(仅允许数字)
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");
}
}
}
在Form i中编写以下代码
public Form1()
{
txtLocl.onerror += new ciscontrols.mtbDtTmPk.usercontrolError(mtbDtTmPk1_onerror);
}
void mtbDtTmPk1_onerror(string message)
{
epfrm2.SetError(mtbDtTmPk1, message);
//throw new NotImplementedException();
}
我在表单中编写代码。 现在我不想在Form中编写任何代码。但errorProvider仅在Form1中。我怎么知道。用户无法在Form1中编写任何代码。但是Form ErrorProvider可以正常工作。
答案 0 :(得分: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...
}