Fehler bei Microsoft "WinForms Series 1: Graphics Device"

8

Ich habe ein Problem mit diesem Beispiel . Ich habe es gerade heruntergeladen und ausgeführt (Visual Studio 2010). Ich habe nichts berührt .

Sorry für die Sprache, es ist auf Italienisch. Von oben nach unten heißt es:

  • Um den Verlust von Informationen vor dem Laden des Designer-Fensters zu vermeiden, müssen diese Fehler behoben werden:
  • Der Designer Windows kann für die Datei nicht visualisiert werden, da keine Klasse entworfen werden kann. Das Designer-Dienstprogramm hat diese Klassen untersucht: SpinningTriangleControl --- Die Basisklasse "WinFormsGraphicsDevice.GraphicsDeviceControl" kann nicht geladen werden. Stellen Sie sicher, dass ein Verweis auf die Assembly vorhanden ist und dass alle Projekte generiert werden.
  • Darunter steht das gleiche

Beachten Sie Folgendes:

  • Wenn ich kompiliere und laufe, funktioniert es.
  • In der Symbolleiste der IDE, manchmal (ich habe nicht verstanden, wann), gibt es die zwei Steuerelemente mit dem Beispiel, SpinningTriangleControl und SpriteFont erstellt; manchmal verschwinden sie. Wenn dies geschieht, werden die Steuerelemente auch aus dem MainWindow-Formular des Projekts entfernt!
  • Ich weiß nicht, ob es wichtig ist, aber Ich habe gemerkt , dass das Steuerelement häufig verschwindet und sich von xxx.designer.cs entfernt, während ich ein neues Steuerelement hinzufüge, wie z Ich füge einen neuen Event-Handler für eine Kontrolle hinzu.

Ich verstehe wirklich nicht, was passiert.

Edit By JT: Die Repro ist hier: sdrv.ms/1kIhI5o

Repro Schritte:

Lösung öffnen
Wählen Sie das Steuerelement flowLayoutPanel1 aus Führen Sie die Anwendung aus Stoppen Sie die Anwendung
Jetzt versuche den GameWrapper auszuwählen!

Ergebnis:
Das GameWrapper-Steuerelement kann nicht mehr ausgewählt werden, es wird nicht einmal in der Dropdown-Liste Eigenschaften von Formularsteuerelementen angezeigt!

    
Francesco B. 09.12.2013, 21:51
quelle

7 Antworten

1

Ich habe gesehen, dass dies in einigen Szenarien vorkommt.

1) Projekt erhält einen Verweis auf sich selbst.

Wenn Sie eine Benutzersteuerung in Projekt A haben und den Entwurf verwenden, um das Benutzersteuerelement zu einem Formular auch in Projekt A hinzuzufügen, fügt Visual Studio eine Selbstreferenz hinzu, die den Designer versaut.

2) Erstellen einer abstrakten Basisklasse für ein visuelles Element.

Da abstrakte Klassen nicht instanziiert werden können, kann der Designer keine Instanz zum Rendern im Designer erstellen.

3) DesignMode Fehler

Wenn Sie die DesignMode-Eigenschaft verwenden, um zu bestimmen, ob UserControls Daten in einem Ereignis wie Load () laden soll oder nicht, müssen Sie wissen, dass DesignMode bricht, wenn Sie Steuerelemente mehr als eine Ebene tief verschachteln. Sie können dies umgehen, indem Sie Ihre eigene designmode-Variable erstellen, indem Sie LicenseManager.UsageMode ausschließen.

    
Scope Creep 23.12.2013, 16:58
quelle
1

Das passiert mir auch von Zeit zu Zeit. Das einzige, was funktioniert, ist das Löschen des benutzerdefinierten Steuerelements aus dem Fenster und dann erneut hinzufügen.

    
Mariano 10.12.2013 01:10
quelle
1

Ich habe Reproschritte in Ihre Frage eingefügt und die Hälfte des Problems erlebt.

Repro-Schritte:
 1. Geöffnete Lösung
 2. Wählen Sie das Steuerelement flowLayoutPanel1 aus  3. Lief die Anwendung
 4. Beendete die Anwendung

Dann konnte ich das GameWrapper Steuerelement nicht auswählen! Das GameWrapper-Steuerelement wurde nicht einmal in der Dropdown-Liste des Formularfensters von Formularsteuerelementen angezeigt!

Ich habe versucht, Steuerelemente wie erwähnt hinzuzufügen, um das Problem zu verursachen. Ich habe sogar das SpinningTriangleControl.cs Benutzersteuerelement hinzugefügt, das in Ihrem Screenshot als Problem angezeigt wird (aber nicht enthalten) in der repro-Lösung, die hochgeladen wurde) .

Um das SpinningTriangleControl.cs -Benutzer-Steuerelement zu reproduzieren, das nicht wie in Ihrem Screenshot geöffnet werden kann, lassen Sie einfach die using OhmGame_Level_editor; Namespace-Referenz weg:

Durch das Hinzufügen von using OhmGame_Level_editor; konnte ich das SpinningTriangleControl.cs-Benutzersteuerelement ohne den Designerfehler öffnen.

  

Es muss ein XNA / Visual Studio Bug sein - wie wenn ein Steuerelement neben dem   gameWrapper ist ausgewählt und dann nach dem Ausführen / Stoppen der   Anwendung Das GameWrapper Steuerelement ist sichtbar, kann aber nicht sein   ausgewählt!

Workaround:
Ich fand, als ich Lösung und schloss das GameWrapper-Steuerelement dann konnte ich es auswählen, egal ob es war oder nicht ausgewählt, wenn Sie die Anwendung ausführen / stoppte.

    
Jeremy Thompson 26.12.2013 23:29
quelle
0

Im Allgemeinen wird ein solches Problem beim Erstellen eines benutzerdefinierten Steuerelements angezeigt. Erstellen Sie dazu das WinFormsGraphicsDevice und fügen Sie die generierte Exe in den folgenden Pfad der von Ihnen verwendeten Version von Visual Studio ein.

C: \ Programme \ Microsoft Visual Studio \ Common7 \ IDE

Starten Sie Ihr Visual Studio neu und prüfen Sie, ob dieses Problem behoben ist. Ich hatte Probleme mit meinen benutzerdefinierten Steuerelementen und reparierte es auf diese Weise. Hoffe, es funktioniert auch für dich.

    
sunnytyra 16.12.2013 15:12
quelle
0

Dies scheint durch falsche Referenz verursacht zu sein. Versuche Folgendes: Schließen Sie alle Dateien. Säubern Sie die Lösung und erstellen Sie sie neu. Suchen Sie dann das Projekt oder die DLL, in der die GraphicsDeviceControl-Klasse definiert ist. Löschen Sie die Referenz. Fügen Sie die Referenz erneut hinzu, erstellen Sie sie neu. Versuchen Sie, das Steuerelement erneut zu öffnen.

    
Radin Gospodinov 17.12.2013 10:43
quelle
0

Sie sollten versuchen, einige Versuche / Fänge zu werfen und Haltepunkte zu verwenden und die Ausnahme damit zu finden. Auch ich denke Ihr Problem bezieht sich auf etwas mit GUI-Komponente wie SpriteFont, ContentManager, GraphicsDevice ... Zum Beispiel:

%Vor%     
HICURIN 20.12.2013 15:44
quelle
0

Ich hatte ein Problem im Designer mit Formular, das von anderen Formen erbt. Der Designer möchte sie einfach nicht anzeigen. In meinem Fall war der Designer verloren, weil es keinen Konstruktor ohne Argument gab. Der Code kompiliert und gut ausgeführt, weil ich den Konstruktor mit 1 Argument verwendet habe. Um den Code etwas aufzuräumen, habe ich versucht, den Konstruktor ohne Argument zu löschen, aber ich musste ihn zurückstellen, damit der Designer funktioniert. Sie können versuchen, einen Konstruktor ohne Argument sowohl im geerbten als auch im Basissteuerelement festzulegen.

    
Guillaume Michel 20.12.2013 16:35
quelle

Tags und Links