2016-04-17 4 views
-1

Я стараюсь избегать мерцания при рисовании на панели. я нашел хорошее решение, чтобы получить первый класс из класса PanelОшибка при попытке получить класс из класса Panel в C#

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

затем заменить (что naturall) System.Windows.Forms.Panel с DoubleBufferedPanel в классе designer.cs. Он отлично работает для меня, но он занят тем, что не может перейти к Form1 [Design] из-за следующей ошибки: Служба Service.Windows.Forms.Design.ISelectionUIService уже существует в контейнере службы. Имя параметра: serviceType

Ошибка появляется, даже когда я просто копирую - вставьте класс DoubleBufferedPanel в мою Form1.cs System.Windows.Forms.Panel с DoubleBufferedPanel.

Есть ли способ избежать такой ошибки? Я могу справиться с этим, потому что моя программа отлично работает, когда я запускаю ее, но у меня нет доступа к Form1 [Design].

+0

Возможно, есть некоторые проблемы с непосредственным изменением Designer.cs таким образом. Вы можете попытаться создать свой контроль более стандартным образом https://msdn.microsoft.com/en-us/library/5h0k2e6x(v=vs.100).aspx и затем добавить его в конструктор из панели инструментов http : //stackoverflow.com/questions/3446429/how-to-put-a-usercontrol-into-visual-studio-toolbox –

ответ

0

Я нашел решение, но это очень странно. Я создал новый класс DoubleBufferedPanel.cs в моем проекте как отдельный файл и скопировал вставленный код. Теперь он работает без проблем. Тема может быть закрыта, но я до сих пор не знаю, что только что произошло.

Спасибо!