当调整C# Windows窗体大小时,如何防止窗口重绘

22

有哪些Windows消息或事件可以监听,以便停止窗口在调整大小时重新绘制每个像素?

也就是说,当用户单击窗口边缘并开始调整大小时,我不希望重新绘制整个内容,直到他松开。这是因为出于某种原因,当前的调整大小存在颤抖,可能是因为一切都在重新布局。

我尝试过WM_SIZING,但它只告诉我正在调整大小,我希望知道调整大小的开始和结束时间,以便在用户停止调整大小之前暂停布局。

1个回答

51

没事了,我找到这两个事件了。

this.ResizeBegin += (s, e) => { this.SuspendLayout(); };
this.ResizeEnd += (s, e) => { this.ResumeLayout(true); };

运作得非常好


4
接受这个答案,对于未来搜索相同问题的人会很有用。 - Nick Craver
它说我必须等待2天才能回答自己的问题。 - Daniel
4
在事件分配中使用Lambda语法是一个不错的选择。但是,请注意:如果在类似于“表单加载”事件或任何使用标准的“e名称”作为EventArgument类型参数的事件中使用此类语法,变量名“e”将已经被使用,所以更改成其他名称例如“evt”可能会很方便。 - BillW
对我来说,只有在某些情况下扩大表单时才有效。当我再次缩小它时,锚点不会更新我的控件。 - Icoryx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接