Winforms:为什么事件会在设计时触发?

mys*_*ack 2 .net c# events windows-forms-designer winforms

为什么在设计时显示消息?

我的代码是:

class Class1 : TextBox
{
    public Class1()
    {
        this.Resize += new EventHandler(Class1_Resize);
    }

    void Class1_Resize(object sender, EventArgs e)
    {
        MessageBox.Show("Resize");
    }
}
Run Code Online (Sandbox Code Playgroud)

图片:

替代文字

Kir*_*oll 5

因为这就是Form设计师的工作方式.它实际上是在设计时将其显示在表单中时实例化控件.因此,当您在设计器中调整控件的大小时,将触发消息框的代码.

  • +1.检查`if(!DesignMode)`应该有助于解决OP的问题. (4认同)
  • @max:好点; 有条件地在`OnLoad`上注册处理程序,或有条件地抑制处理程序本身的操作是要走的路. (2认同)