【问题标题】:C# User Control RepaintC# 用户控件重绘
【发布时间】:2011-03-02 10:38:00
【问题描述】:

我有一个 C# 应用程序,上面有一个主窗体和几个自定义用户控件。

当我移动主窗体时,用户控件会继续重绘,当我停止移动主窗体时,它们会再次重绘。

我可以做些什么来禁用这种重绘?

【问题讨论】:

  • 屏幕有闪烁吗?你想停止闪烁吗

标签: c# .net winforms repaint


【解决方案1】:

this previous question 的回答讨论了如何使用 WM_SETREDRAW Win32 API 来暂停和恢复绘图。它包括一个很好的包装类;也许它会帮助你。

【讨论】:

    【解决方案2】:

    如果它的闪烁让您烦恼,您可以尝试将控件上的 DoubleBuffered 属性设置为 true。

    除此之外,您可以订阅表单移动事件并以与此问题中描述的方式类似的方式关闭子控件上的绘画...

    Have a look here

    【讨论】:

    • 嗯...问题是当主窗体移动时我不重新绘制控件时根本没有绘制控件。我想要的:当主窗体移动时,只重绘子控件 #1 并让其他控件保持原样(不重绘)。
    【解决方案3】:

    您不必自己强制 Invalidate()。我假设您正在控件中进行一些自定义绘画?在 InitializeComponent() 之后的构造函数内;你有吗

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

    ?

    【讨论】:

      猜你喜欢
      • 2018-10-19
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      相关资源
      最近更新 更多