我正在尝试在面板上绘制时避免闪烁。
我首先找到了一个很好的解决方案来从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作为单独的文件,并复制了粘贴的代码。
现在它可以正常工作了。
主题可以结束,但我仍然不知道刚刚发生了什么。
谢谢 !