Ich entwickle eine Windows-Anwendung basierend auf der Windows-Formularvorlage. Ich benutze .NET 3.5 Version. In dieser App ist das Ziel, dass alle visuellen Einstellungen der verschiedenen Formulare aus der App.Config-Datei verwaltet werden können (die Hintergrundfarbe, die Hintergrundfarbe der verschiedenen Schaltflächen usw.).
Im Grunde habe ich eine "FormBase" -Klasse, von der alle meine Formen erben, und diese Klasse enthält Code wie folgt:
%Vor%Und dann habe ich meine App.Config-Datei, die Code wie folgt enthält:
%Vor%Und nun, in der Deklaration aller meiner Formulare habe ich die Zeile
%Vor%Mein Problem ist, wenn ich die App laufe, läuft es einwandfrei, und es funktioniert, die verschiedenen Farben in den App.Config-Dateien sind die Farben, die auf meinen Formularen angezeigt werden. Aber wenn ich den Designer in Visual Studio nur anschaue, ohne die App auszuführen, kann der Designer nicht anzeigen, wie das Formular aussehen wird, und ich bekomme den folgenden Fehler
Der Dienst System.Windows.Forms.Design.IEventHandlerService ist bereits im Servicebehälter vorhanden. Parametername: serviceType
Und ich weiß nicht, wie ich das lösen soll. Das ist kein großes Problem, da die App sowieso gut läuft, aber das stört mich und ich würde gerne wissen, was passiert
Ich bin gerade selbst auf dieses Problem gestoßen. Laut einer anderen Webseite kann dieser Fehler behoben werden, indem Sie Visual Studio schließen und Ihren Ordner "obj" löschen, dann Visual Studio wieder öffnen und einen Projekt-Neuaufbau durchführen.
Hier ist die Seite, von der ich es gelesen habe. Ссылка
Sie haben gesagt, dass ich auch den bin-Ordner löschen soll, aber ich habe festgestellt, dass ich das nicht tun musste. Hoffe das hilft!
Das funktionierte für mich, obwohl ich immer noch besser verstehen wollte, was falsch lief. Ich habe in Visual Studio ein vererbtes Formular erstellt. Anscheinend ruft der Visual Studio-Designer die Load-Funktion auf, bevor das Formular angezeigt wird. Die Ladefunktion im übergeordneten Fenster wurde aufgerufen und auf ein Steuerelement im Formular zugegriffen. Dadurch wurde eine Objektreferenz ausgelöst, die nicht auf eine Instanz eines Objekts festgelegt wurde (warum?).
Die Lösung für mich bestand darin, die folgende Codezeile am Anfang der Funktion zum Laden der übergeordneten Formulare hinzuzufügen. Ich benutze VB, aber es ist ähnlich für C #.
%Vor%Ich bin gerade auch auf dieses Problem gestoßen. Ich habe die obige Lösung versucht, und es hat nicht für mich funktioniert. Die Struktur, die ich habe, ist dies: Öffentliches Form1: Form öffentliches Form2: Form1 public Form3: Form2
Ich habe versucht, die obj / bin-Ordner neu zu erstellen und zu löschen, konnte diesen Fehler jedoch nicht entfernen. Zum Schluss habe ich Form3 als Plausibilitätsprüfung so geändert, dass er von der Windows Form-Klasse erbt:
%Vor%Dann habe ich Form3 im Designer wieder geöffnet, und es erschien (wie ich es erwartet hatte). Ich habe dann Form3 zurück zu Erben von Form2 geändert und Form3 im Designer wieder geöffnet. Und es hat funktioniert.
# random-bug-fix-win
Viel Glück!
Ich habe meine Lösung gereinigt und neu aufgebaut, um aus dieser Situation herauszukommen.
Überprüfen Sie auch, ob Sie eine erweiterte Klasse für das Formular verwendet haben und auch KeyEvent
oder MouseEvent
von Windows.Forms
verwenden, sicher, dass Sie diese Argumente nach Windows.Forms.KeyEventArgs
oder Windows.Forms.MouseEventArgs
aufrufen.
Tags und Links c# winforms xml inheritance app-config