【问题标题】:send an event function to a button from one class to other class将事件函数发送到从一个类到另一个类的按钮
【发布时间】:2012-02-01 18:18:11
【问题描述】:

我有一门课(class1) 在这个类中,我有一个函数和另一个类:

class2 _class2 = new class2();    
protected void Button_Click(object sender, EventArgs e)
{
    //do something
}

现在我有另一个班级(class2) 里面有一个按钮 我想向按钮发送功能(Button_Click),以便我可以将其插入 按钮事件点击 (button.click +=)

class2 在一个循环中为 class1 构建多个按钮, 我希望当有人单击其中一个按钮时,它将转到事件函数(Button_Click) 1级 我希望我很清楚 感谢您的帮助

【问题讨论】:

  • 我想我明白您想要什么,但您的示例不清楚(1/2 类)请发布两个类的完整示例。
  • 你不能在类之间发送任何东西,它们是静态编译时的东西。你想在对象之间发送它吗? (答案部分在于类和对象的区别)

标签: c# asp.net button event-handling


【解决方案1】:

protected void Button_Click 更改为public void Button_Click。 然后从别的地方去:

Button b; // defined in class2, for example

class1 _class1 = new class1();

b.Click += new EventHandler(_class1.Button_Click);

【讨论】:

  • 但是如何使用 class2 构造函数将函数 (Button_Click) 从 class1 发送到 class2
  • 在那个例子中用 2 交换 1,我猜。
  • new EventHandler(...) 是多余的,你可以简单地这样 += _class1.Button_Click
【解决方案2】:

您是否试图将事件从一个用户控件“冒泡”到调用用户控件?如果是这样,你需要做这些事情:

在单击按钮的控件中 (a): - 将事件处理程序添加到按钮。单击

在调用者控件中 (b) - 订阅创建标记中引用的函数的事件:usercontrol(a) theeventhandlerina="the function in b"

【讨论】:

    【解决方案3】:

    如果 class2 属于第一类,你可以有一个 add 函数,类似于

    _class2 = new Class2();
    _class2.AddButton("button1",ButtonClick);
    _class2.AddButton("button2",ButtonClick);
    _class2.AddButton("button3",ButtonClick);
    
    
    //in class2
    public void AddButton(string buttonName, EventHandler handler)
    {
       var newButton = new Button(buttonName);
       newButton.click+= handler;
    
    }
    

    这当然是一个人为的例子,但它应该明白这一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      相关资源
      最近更新 更多