用户控件的BeginUpdate()EndUpdate

Dan*_*lba 8 .net c# user-controls paint winforms

我编写了一个UserControl,其行为类似于ContainerControl,但完全由WindowsForms绘制(我继承自UserControl)

我想在填充它时避免绘制控件,所以我需要写一些类似于BeginUpdate()- 的东西EndUpdate().

当控件是用户绘制时,这很容易做到,但在这种情况下,我不确定如何继续.

Geo*_*ton 11

您可以使用Suspend/Resume布局.例如

private void BeginUpdate()
{
  this.SuspendLayout();
  // Do paint events
  EndUpdate();
}

private void EndUpdate()
{
   this.ResumeLayout();
   // Raise an event if needed.
}
Run Code Online (Sandbox Code Playgroud)

如果你有兴趣暂停一个控件及其孩子的绘画,请查看这个SO问题:暂停控制和儿童绘画

  • 据我所知,SuspendLayout并不一定会阻止绘画的控制.它主要适用于FlowLayoutPanel等容器,后者对其子容器执行布局操作.它将用于避免每次向面板添加控件时执行布局操作,例如在循环中.我可能错了,但如果你有任何更多信息,我会更喜欢. (4认同)