调整c#窗体大小时防止窗口重绘

Dan*_*iel 20 c# resize winforms form-control

我可以收听什么窗口消息或事件,以阻止窗口重绘其每个像素的大小?

也就是说,当用户点击窗口的边缘并开始重新调整大小时,我不想重新绘制整个内容,直到他放开为止.这是因为出于某种原因,它目前在调整大小时可能会因为一切都重新对接而不是重新对齐.

我尝试了WM_SIZING,但这只是告诉我它正在重新调整大小,我想知道大小的开始和结束,所以我可以暂停布局,直到用户停止调整大小.

Dan*_*iel 42

没关系,刚发现这两件事.

this.ResizeBegin += (s, e) => { this.SuspendLayout(); };
this.ResizeEnd += (s, e) => { this.ResumeLayout(true); };
Run Code Online (Sandbox Code Playgroud)

工作一种享受

  • 接受这个作为答案,将对将来搜索同一问题的人有用 (3认同)
  • +1在事件分配中使用Lambda语法.但是,用户请注意:如果使用'e'这种类型的语法在Form Load事件中使用,或者使用标准'e名称作为EventArgument类型参数的任何东西:变量名'e'已经在使用中,所以换到像'evt这样的东西可能会很方便. (3认同)