我正在动态创建对象并将它们插入到html表中,对象是标签或链接按钮,如果它们是链接按钮,我需要为click事件订阅一个事件处理程序,但我很难找到一种方法实际上添加处理程序。到目前为止的代码是:
WebControl myControl;
if _createLabel)
{
myControl = new Label();
}
else
{
myControl = new LinkButton();
}
myControl.ID = "someID";
myControl.GetType().InvokeMember("Text", BindingFlags.SetProperty, null, myControl, new object[] { "some text" });
if (!_createLabel)
{
// somehow do myControl.Click += myControlHandler; here
}
答案 0 :(得分:7)
以下内容可行:
LinkButton lnk = myControl as LinkButton;
if (lnk != null)
{
lnk.Click += myControlHandler;
}
答案 1 :(得分:3)
答案 2 :(得分:1)
这表示将控件上的事件(按名称)绑定到当前实例上的方法(按名称):
Button btn = new Button();
EventInfo evt = btn.GetType().GetEvent("Click");
MethodInfo handler = GetType().GetMethod("SomeHandler",
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
evt.AddEventHandler(btn, Delegate.CreateDelegate(
evt.EventHandlerType, this, handler));
答案 3 :(得分:-1)
您可以这样做:
Control.Event + = new EventHandlerType(this.controlClick);