2016-04-17 14 views
-1

abzuleiten Ich versuche zu vermeiden, flackern beim Zeichnen auf dem Panel. ich eine gute Lösung gefunden haben zunächst eine Klasse von Panel-KlasseFehler beim Versuch, Klasse von Klasse Panel in C#

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

dann ersetzt (die naturall ist) System.Windows.Forms.Panel mit DoubleBufferedPanel in der Designer.cs Klasse abzuleiten. Es funktioniert perfekt für mich, aber es ist besetzt, nicht in der Form1 [Design] aufgrund folgender Fehler gehen: Der Service System.Windows.Forms.Design.ISelectionUIService ist bereits im Service-Container vorhanden. Parametername: serviceType

Der Fehler wird angezeigt, selbst wenn ich nur kopiere - füge die DoubleBufferedPanel Klasse in mein Form1.cs System.Windows.Forms.Panel mit DoubleBufferedPanel.

Gibt es eine Möglichkeit, einen solchen Fehler zu vermeiden? Ich kann damit umgehen, weil mein Programm perfekt funktioniert, wenn ich es ausführe, aber ich habe keinen Zugang zu Form1 [Design].

+0

Vielleicht gibt es einige Probleme mit der direkten Änderung von Designer.cs. Sie können versuchen, Ihr Steuerelement auf eine standardmäßige Weise https://msdn.microsoft.com/en-us/library/5h0k2e6x(v=vs.100).aspx zu erstellen und dann im Designer aus der Toolbox http hinzuzufügen : //stackoverflow.com/questions/3446429/how-to-put-a-usercontrol-into-visual-studio-toolbox –

Antwort

0

Ich habe eine Lösung gefunden, aber es ist sehr seltsam. Ich habe eine neue Klasse DoubleBufferedPanel.cs in meinem Projekt als separate Datei erstellt und kopierten Code eingefügt. Jetzt funktioniert es ohne Probleme. Thema kann geschlossen werden, aber ich habe immer noch keine Ahnung, was gerade passiert ist.

Vielen Dank!