在绘制面板时,我试图避免闪烁。 我首先找到了一个很好的解决方案,从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]。
答案 0 :(得分:0)
我找到了一个解决方案,但这很奇怪。 我在项目中创建了一个新类DoubleBufferedPanel.cs作为单独的文件并复制粘贴的代码。 现在它没有问题。 主题可以关闭,但我仍然不知道刚刚发生了什么。
谢谢!