【发布时间】:2011-03-02 10:38:00
【问题描述】:
我有一个 C# 应用程序,上面有一个主窗体和几个自定义用户控件。
当我移动主窗体时,用户控件会继续重绘,当我停止移动主窗体时,它们会再次重绘。
我可以做些什么来禁用这种重绘?
【问题讨论】:
-
屏幕有闪烁吗?你想停止闪烁吗
我有一个 C# 应用程序,上面有一个主窗体和几个自定义用户控件。
当我移动主窗体时,用户控件会继续重绘,当我停止移动主窗体时,它们会再次重绘。
我可以做些什么来禁用这种重绘?
【问题讨论】:
this previous question 的回答讨论了如何使用 WM_SETREDRAW Win32 API 来暂停和恢复绘图。它包括一个很好的包装类;也许它会帮助你。
【讨论】:
如果它的闪烁让您烦恼,您可以尝试将控件上的 DoubleBuffered 属性设置为 true。
除此之外,您可以订阅表单移动事件并以与此问题中描述的方式类似的方式关闭子控件上的绘画...
【讨论】:
您不必自己强制 Invalidate()。我假设您正在控件中进行一些自定义绘画?在 InitializeComponent() 之后的构造函数内;你有吗
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
?
【讨论】: