为什么Winform用户控制调整大小事件是触发事件,没有任何调整大小命令



重复我的问题:

  1. 添加新的用户控件。
  2. 添加关注方法并注册以调整事件大小。

    Resize += new EventHandler(AutoResize);
    private void UserControl2_Resize(object sender, EventArgs e)
    {
        MessageBox.Show($"{Width}:{Height}");
    }
    
  3. 重建并将此用户控件添加到Winform中。我发现这种方法被调用了每个winform。

  4. 如果我注册了此方法以调整onload事件的大小,则此方法从未调用,除非我真正调整它。

考虑以下事实:

  • Size更改时,UserControlRezize事件将发生。
  • 当创建控件的句柄时,UserControlLoad事件将发生。
  • 删除表单上的控件时,将为控件生成以下代码:

    // 
    // userControl11
    // 
    this.userControl11.Location = new System.Drawing.Point(0, 0);
    this.userControl11.Name = "userControl11";
    this.userControl11.Size = new System.Drawing.Size(150, 150);
    this.userControl11.TabIndex = 0;
    
  • 在此行this.userControl11.Size = new System.Drawing.Size(150, 150);Load事件尚未提高,但已执行构造函数。

考虑事实,当您在构造函数中订阅Resize事件时,this.userControl11.Size = ...将提高Resize事件,并且该事件将由您的活动处理程序处理。

但是,当您在控件的Load中订阅Resize时,该初始调整大小将不受事件处理程序的处理,因为您仍然没有订阅Resize事件,因为仍然没有创建控件。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<</p>

最新更新