【发布时间】:2016-08-09 02:19:53
【问题描述】:
我试图避免在面板上绘图时闪烁。 我找到了一个很好的解决方案,首先从 Panel 类派生一个类
public class DoubleBufferedPanel : Panel
{
public DoubleBufferedPanel()
{
this.SetStyle(ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.UserPaint, true);
}
}
然后在 Designer.cs 类中用 DoubleBufferedPanel 替换(这是自然的)System.Windows.Forms.Panel。 它对我来说非常有效,但由于以下错误而无法进入 Form1 [Design]: 服务 System.Windows.Forms.Design.ISelectionUIService 服务已存在于服务容器中。参数名称:服务类型
即使我只是复制,也会出现错误 - 使用 DoubleBufferedPanel 将 DoubleBufferedPanel 类粘贴到我的 Form1.cs System.Windows.Forms.Panel。
有什么办法可以避免这样的错误吗?我可以处理它,因为我的程序在运行时运行良好,但我无法访问 Form1 [Design]。
【问题讨论】:
-
这样直接修改 Designer.cs 可能会出现一些问题。您可以尝试以更标准的方式创建控件msdn.microsoft.com/en-us/library/5h0k2e6x(v=vs.100).aspx,然后从工具箱中将其添加到设计器中stackoverflow.com/questions/3446429/…
标签: c# winforms error-handling panel flicker