如何在UserControl中引发事件以在另一个项目中处理它?

时间:2013-02-26 07:00:05

标签: c# vb.net winforms user-controls controls

我追随question。在我的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?
}

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

2 个答案:

答案 0 :(得分:1)

简单地:

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中,因为你在问题中标记了它,但很容易转换它。)

答案 1 :(得分:1)

试试这个:

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