如何在UserControl内部引发事件,以便在另一个项目中在外部处理它



我来问这个问题。例如,在我的CustomControl中,我想处理所有内部控件的MouseClick事件,然后为customControl引发一个事件,这样我就可以在使用该控件的每个项目中处理它。

private void UserControl1_Load(object sender, EventArgs e)
{
    foreach (var control in Controls)
    {
        ((Control)control).MouseClick += UserControl1_Click;
    }
}
private void UserControl1_Click(object sender, MouseEventArgs e)
{
    // here I want to raise a MouseClick event for UserControl1?
}

我该如何解决这个问题?(我认为这可能就像我们捕捉到一个异常,然后再次将其扔到其他地方捕捉它一样?(

试试这个:

private void UserControl1_Click(object sender, MouseEventArgs e)
{
    // Raise MouseClick event for this control
    base.OnMouseClick(e);
}

简单地说:

Public Event MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs)
Private Sub UserControl1_Click (object sender, MouseEventArgs e)
    RaiseEvent MouseClick(sender, e)
End Sub

然后在外部处理MouseClick事件。(我把代码放在Vb.Net中,因为你在问题中标记了它,但很容易转换(。

最新更新