重复我的问题:
- 添加新的用户控件。
-
添加关注方法并注册以调整事件大小。
Resize += new EventHandler(AutoResize); private void UserControl2_Resize(object sender, EventArgs e) { MessageBox.Show($"{Width}:{Height}"); }
-
重建并将此用户控件添加到Winform中。我发现这种方法被调用了每个winform。
- 如果我注册了此方法以调整onload事件的大小,则此方法从未调用,除非我真正调整它。
考虑以下事实:
- 当
Size
更改时,UserControl
的Rezize
事件将发生。 - 当创建控件的句柄时,
UserControl
的Load
事件将发生。 -
删除表单上的控件时,将为控件生成以下代码:
// // 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>