自定义控件上的自定义事件

时间:2010-09-08 15:09:56

标签: c# events custom-controls

我有一个自定义控件,我们称之为“TheGrid”。

在TheGrid的控件中是另一个我们称之为“GridMenu”的控件。

GridMenu在其自己的控件集合中有一个按钮控件。

我想让开发人员使用此控件将页面级方法与GridMenu ala内部的按钮OnClick关联起来:

<customcontrols:TheGrid id="tehGridz" runat="server" onGridMenuButtonClick="mypagemethod" />

2 个答案:

答案 0 :(得分:4)

在GridMenu(我假设是另一个自定义控件)上,通过将事件声明为公共来公开事件ButtonClick:

public event EventHandler ButtonClick;

如果愿意,可以通过定义委托和自定义事件参数类来创建自定义事件处理程序。在此控件的逻辑中,您需要引发事件(可能在GridMenu中包含的按钮的Clicked事件处理程序中;事件可以级联)。在C#中编码时,您需要在引发事件之前检查事件是否为空(意味着至少附加了一个处理程序)。

现在,TheGrid可以看到此事件,其中包含GridMenu。现在,您需要创建一个“传递”,以允许TheGrid的用户附加处理程序,而无需了解GridMenu。您可以通过在TheGrid上指定类似于属性的事件来执行此操作,并从内部事件中附加和分离处理程序:

public event EventHandler GridMenuButtonClick
{
   add{ GridMenu.ButtonClick += value;}
   remove { GridMenu.ButtonClick -= value;}
}

从包含TheGrid控件的控件的标记开始,您现在可以通过将其附加到OnGridMenuButtonClicked来指定事件处理程序。

答案 1 :(得分:0)