繁体   English   中英

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

[英]Why won't SizeChanged event work properly with panel?

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

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

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

预先谢谢你

尺寸已更改

调整控件的大小时将发生Resize事件,而Size属性的更改时将发生SizeChanged事件。

您可以使用任何一种,因为调整大小会导致Size属性发生变化。 但是,您应该使用Layout事件,如Resize和SizeChanged事件的文档中所建议的那样。

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

再次从源头来看,仅当UpdateBounds()确定旧大小与新大小之间存在差异时,才会调用OnSizeChanged()。 因此,SizeChanged事件对应于Size属性的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM