我正在尝试在面板上绘制时避免闪烁。
我首先找到了一个很好的解决方案来从Panel类派生一个类

public class DoubleBufferedPanel : Panel
{
    public DoubleBufferedPanel()
    {
        this.SetStyle(ControlStyles.AllPaintingInWmPaint |
            ControlStyles.OptimizedDoubleBuffer |
            ControlStyles.UserPaint, true);
    }
}

然后用Designer.cs类中的DoubleBufferedPanel替换(自然)System.Windows.Forms.Panel。
它对我来说很完美,但是由于以下错误而无法进入Form1 [设计]:
服务System.Windows.Forms.Design.ISelectionUIService服务已存在于服务容器中。参数名称:serviceType

即使我只是复制,也会出现错误-使用DoubleBufferedPanel将DoubleBufferedPanel类粘贴到我的Form1.cs System.Windows.Forms.Panel中。

有什么办法可以避免这样的错误?我可以处理它,因为我的程序在运行时可以完美运行,但是无法访问Form1 [Design]。

最佳答案

我找到了解决方案,但这很奇怪。
我在Project中创建了一个新类DoubleBufferedPanel.cs作为单独的文件,并复制了粘贴的代码。
现在它可以正常工作了。
主题可以结束,但我仍然不知道刚刚发生了什么。

谢谢 !

10-08 13:48