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

问题描述 投票:0回答:1

重复我的问题:

  1. 添加新的用户控件。
  2. 添加follow方法并在构造函数中注册Resize事件。 qazxsw poi
  3. 重建并将此用户控件添加到winform。我发现这个方法是调用每个winform加载的。
  4. 如果我在Onload事件中将此方法注册到Resize,那么除非我真正调整它的大小,否则此方法永远不会调用。
c# winforms user-controls resize windows-forms-designer
1个回答
0
投票

请考虑以下事实:

  • Resize += new EventHandler(AutoResize); private void UserControl2_Resize(object sender, EventArgs e) { MessageBox.Show($"{Width}:{Height}"); } 改变时,RezizeUserControl事件将发生。
  • 当控件的句柄创建时,SizeLoad事件将发生。
  • 当您在窗体上放下控件时,将为控件生成以下代码: UserControl
  • 在这一行// // 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事件中订阅Resize时,您的事件处理程序将不会处理该初始调整大小,因为您仍未订阅Load事件,因为仍未创建控件。

© www.soinside.com 2019 - 2024. All rights reserved.