为什么SizeChanged事件不能在面板上正常工作?

时间:2018-12-09 22:36:49

标签: c# .net

下面的代码可以与我尝试过的所有其他控件一起正常使用,但是如果我在面板上进行尝试,则仅当窗体的高度或宽度增加时,该事件才会激活。面板不会缩小它的尺寸,只会放大它。

我正在按照教授的要求使用Visual Studio 2012。该代码可用于组框,但是我需要使用面板,您能帮我吗?

private void Program_SizeChanged(object sender, EventArgs e)
{
    controlName.Size = new Size(this.Width - 35, this.Height - 75);
}

先谢谢您

1 个答案:

答案 0 :(得分:0)

尺寸已更改

调整控件大小时发生Resize事件,而Size属性发生变化时发生SizeChanged事件。

您可以使用其中任何一个,因为调整大小将导致Size属性更改。但是,您应该使用Layout事件,如Resize和SizeChanged事件的文档所述。

SizeChanged事件由OnSizeChanged()引发。反过来,此函数仅由UpdateBounds()调用,它由多种机制调用,主要包括对WM_MOVE和WM_WINDOWPOSCHANGED消息的处理。

还是从源头开始,仅当UpdateBounds()确定旧大小与新大小之间存在差异时,才调用OnSizeChanged()。因此,SizeChanged事件与Size属性的更改相对应。