0

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

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

我该怎么做才能禁用此重绘?

4

3 回答 3

2

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

于 2011-03-02T02:38:00.293 回答
0

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

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

?

于 2011-03-02T02:32:03.150 回答
0

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

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

看看这里

于 2011-02-15T08:44:45.483 回答