重复我的问题:
添加关注方法并注册到构造器中的Resize事件。
Resize += new EventHandler(AutoResize);
private void UserControl2_Resize(object sender, EventArgs e)
{
MessageBox.Show($"{Width}:{Height}");
}
重建此用户控件并将其添加到winform。我发现每次调用winform都会调用此方法。
答案 0 :(得分:0)
请考虑以下事实:
Rezize
发生更改时,将发生UserControl
的{{1}}事件。Size
的{{1}}事件。将控件放在窗体上时,将为该控件生成以下代码:
Load
在此行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
事件,因为尚未创建控件。