ghi*_*boz 3 c# winforms window-resize
在我的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();
}
}
Run Code Online (Sandbox Code Playgroud)
但这是一个丑陋的解决方案......
仅略微优于原始解决方案,但至少它解决了问题,而不仅仅是引用文档.
显而易见的问题是,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;
}
Run Code Online (Sandbox Code Playgroud)
当然最好有一个指标EventArgs,ResizeEnd但看不到更简单的方法.
BTW,而不是检查Width和Height使用Size也将是一个小改进..
| 归档时间: |
|
| 查看次数: |
3182 次 |
| 最近记录: |