如何仅在完全创建时显示控件(.NET)

时间:2011-01-06 01:57:39

标签: .net winforms visual-studio-2010

我正在创建复杂的UserControl,对我来说很烦人的是应用程序在创建模式下部分显示它 意味着最终用户可以看到所有创建/绘制过程(此UserControl上的控件显示延迟,渐变框绘制它们填充等)

我很确定有一些命令隐藏此过程并仅在完全绘制时显示控件 ...

有人可以建议如何存档吗?

2 个答案:

答案 0 :(得分:3)

确保您的UserControl已标记为双缓冲。这确保了当UserControl的客户区需要绘图时,它就会在屏幕外的缓冲区上完成,然后在完成时将其显示在屏幕上。这使它成为原子,你不应该看到它们发生的绘制动作。要添加它,请在UserControl构造函数中使用以下内容...

        SetStyle(ControlStyles.OptimizedDoubleBuffer |
                 ControlStyles.AllPaintingInWmPaint |
                 ControlStyles.UserPaint, true);

答案 1 :(得分:1)

嗯,我不认为存在这样的东西,但有这些东西:

  • SuspendLayout (这样做你想要的,不显示绘图过程,ResumeLayout显示布局变化)
  • 可见(您可以在绘制控件时更改它)
  • 绘制事件

您也可以调用Invalidate(强制重绘表单)

这适用于初始化,但我不明白你是否希望每次控件被绘制或仅在创建时

但是我不知道如何拦截“绘图前”和“绘图后”(绘画我觉得它是在绘图之前触发的,不确定)