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:
Beachten Sie Folgendes:
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!
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.
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.
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.
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.
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.