尝试从C#中的类Panel派生类时出现错误

时间:2016-04-17 10:38:53

标签: c# winforms error-handling panel flicker

在绘制面板时,我试图避免闪烁。 我首先找到了一个很好的解决方案,从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]而占用它: Service.Windows.Forms.Design.ISelectionUIService服务已存在于服务容器中。参数名称:serviceType

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

有没有办法避免这样的错误?我可以处理它,因为我的程序在运行时运行得很好,但我无法访问Form1 [Design]。

1 个答案:

答案 0 :(得分:0)

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

谢谢!