如何将参数传递给事件?

时间:2011-01-27 21:49:43

标签: c# events delegates

我的一些变量没有被每个方法调用序列化。

我怎么知道参数在哪里?

public static int button21_Click(object me, EventArgs MyArgs) {
  button17(me, MyArts);
}

2 个答案:

答案 0 :(得分:8)

我承认我并不完全确定你在问什么,但从我所看到的情况来看,你似乎试图为多个Button.Click事件使用相同的事件处理程序。你可以用两种方式做到这一点。

1。使用WinForms设计器。

选择其中一个按钮然后按F4或转到“属性”窗口并选择“事件”选项卡(它是带有闪电图标的那个)。然后找到Click事件并创建一个新的处理程序。然后转到其他每个按钮并找到他们的Click事件,只需使用下拉列表选择您已创建的处理程序。

2。使用代码。

在代码中,创建一个事件处理程序,然后将该事件处理程序添加到每个按钮的Click事件中。

private void OnClick(object sender, EventArgs args)
{
    // Do stuff to handle the event.
}

// This is the form's constructor.
public MyWinForm()
{
    InitializeComponents();

    this.button1.Click += OnClick;
    this.button2.Click += OnClick;
    this.button3.Click += OnClick;
    this.button4.Click += OnClick;
    this.button5.Click += OnClick;
    this.button6.Click += OnClick;
    this.button7.Click += OnClick;
}

答案 1 :(得分:2)

我正准备写一些罐头反应,首先指出我投票结束了这个问题,其次是对你的英语做了一些贬损的评论,以及一个人必须成为一个心灵读者的事实。 得到你在谈论什么。然后我想跟它一起玩,让我们试一试。

我会忽略这样一个事实:在你的代码中,button17(me, MyArts);完全没有意义。我假设你想在它上面引发一个事件,或者将参数传递给另一个按钮。首先你放MyArts而不是MyArgs,所以这里有一个编译错误。其次,button17可能已经构建,不需要再次构建。我怀疑你的实际动机是在其上调用其他方法,传递参数。

第三,这种方法是静态的。因此,如果它是一个类的成员,它就无法访问它的任何成员变量,所以当它被调用时,this无效,并且你在没有paddle的全局命名空间中。考虑将其设为非静态。

希望这会有所帮助。我知道骑自行车者不会试图回答这个问题。