0

关于 WinForms 设计器以及如何自定义行为的问题。我多次看到的是,当您为按钮选择不同的事件处理程序时,它将在未使用时删除旧的事件处理程序(如代码中)。

我想避免这种行为,但找不到配置。有人提示吗?谢谢!

更新 由于多个评论首先质疑触发此操作的操作,因此我想指出,在重构现有代码库期间,它主要打击了我。

4

2 回答 2

1

这正是设计师的工作方式——你无法改变它。

解决问题的方法是在代码中添加事件处理程序,而不是在设计器中:

public Form1()
{
    InitializeComponent();
    this.button1.Click += new EventHandler(button1_Click);
    this.button1.Click +=new EventHandler(button1_Click2);
}

我必须指出,我质疑是否需要两个单独的事件处理程序。

于 2011-03-20T23:00:26.623 回答
1

对此没有配置。设计者做正确的事,它只删除没有代码的事件处理程序。一旦你在方法体中放了一些东西,它就会保存你写的东西并生成一个新方法。这可以确保您不会丢失代码,并确保您没有死方法乱扔代码。

请注意,在同一个类(表单)中为控件的事件添加多个事件处理程序是没有意义的。您应该只合并处理程序的代码。这也确保您不会有任何意外,同一事件的多个订阅者运行的顺序是相当不可预测的。设计器仅支持单个事件处理程序,仅仅是因为它没有任何方法可以跟踪多个事件处理程序。

于 2011-03-21T00:18:24.280 回答