我有一个自定义控件,我们称之为“TheGrid”。
在TheGrid的控件中是另一个我们称之为“GridMenu”的控件。
GridMenu在其自己的控件集合中有一个按钮控件。
我想让开发人员使用此控件将页面级方法与GridMenu ala内部的按钮OnClick关联起来:
<customcontrols:TheGrid id="tehGridz" runat="server" onGridMenuButtonClick="mypagemethod" />
答案 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)