C#检测窗口是否真正调整大小而不是移动
作者:互联网
在我的winform程序中,我需要检测何时调整表单的大小:但是当将表单简单地移到办公桌中时,也会调用ResizeEnd方法.
仅在调整窗口大小时才可以检查吗?
我可以将最后一个宽度和最后一个高度保存到ResizeEnd方法中,如下所示:
int lastWidth;
int lastHeigth;
private void frmMain_ResizeEnd(object sender, EventArgs e)
{
if (lastHeigth != this.Height || lastWidth != this.Width)
{
lastHeigth = this.Height;
lastWidth = this.Width;
fireResize();
}
}
但这是一个丑陋的解决方案…
解决方法:
仅比原始解决方案好一点,但至少可以解决问题,而不仅仅是引用文档.
显然,问题在于Resize一直都在触发,因此似乎需要标记:
bool sizing = false;
private void Form1_ResizeEnd(object sender, EventArgs e)
{
if (!sizing) return;
if (sizing) {sizing = false; /*do your stuff*/ }
}
private void Form1_Resize(object sender, EventArgs e)
{
sizing = true;
}
当然,在ResizeEnd的EventArgs中有一个指示器会很好,但是看不到一种更简单的方法.
顺便说一句,代替使用Size检查Width和Height也是一个小改进.
标签:window-resize,c,winforms 来源: https://codeday.me/bug/20191029/1959784.html