从String添加事件处理程序

时间:2011-07-24 20:07:06

标签: c#

大家好我有一个按钮,我知道它有一个“Click”事件。 如何使用“Click”和Delegate添加此事件?感谢

2 个答案:

答案 0 :(得分:2)

定义辅助方法:

public static void AddEventHandler(object obj, string eventName, Delegate handler)
{
    if(obj == null) throw new ArgumentNullException("obj");
    if(eventName == null) throw new ArgumentNullException("eventName");
    if(handler == null) throw new ArgumentNullException("handler");

    var type = obj.GetType();
    var evt = type.GetEvent(eventName);
    if(evt == null) throw new ArgumentException(
        string.Format("Event '{0}' is not defined by type '{1}'", eventName, type.Name));

    evt.AddEventHandler(obj, handler);
}

并使用它:

AddEventHandler(yourButton, "Click", yourHandlerDelegate);

答案 1 :(得分:0)

在与您的表单相关的.cs文件中(Web表单,Win表单)::

// This will handle the event for the button named bntSubmit
protected void btnSubmit_Click(object sender, EventArgs e)
{
   // Code to handle click event
}

一般来说,大多数人(但不是全部)都使用<controlid>_<event>命名约定来处理事件处理程序。像btnSumbit_Click一样,用于id为btnSubmit的按钮的OnClick事件。

对于ASP.NET,您需要在标记(.aspx文件)中设置按钮OnClick属性(双击设计器中的表单也会生成存根):

<asp:Button ID="btnSubmit" OnClick="btnSubmit_Click" Text="Submit" runat="server" />

在Win Forms中,双击设计器上的按钮是生成方法存根的最快方法。

我在MVC或WPF中没有多少工作,但我想这个过程是相似的,方法签名是相同的。