Das Designerladeprogramm hat keine Stammkomponente bereitgestellt, aber den Grund nicht angegeben.

  • VB.NET

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von roepke.

    Das Designerladeprogramm hat keine Stammkomponente bereitgestellt, aber den Grund nicht angegeben.

    Mahlzeit zusammen,

    als ich gerade mein Projekt geladen hab und dann auf den Reiter Form1.vb [Entwurf], kam folgender Fehler:

    Das Designerladeprogramm hat keine Stammkomponente bereitgestellt, aber den Grund nicht angegeben.

    Das letzte Mal als ich das Programm geladen habe (und sogar kompiliert!) war noch alles in Butter.

    Es gibt zwar schon ein Thema dazu, aber das ist von 2012 und da war nicht wirklich eine Lösung drin...

    Leider sind für diesen Fehler keine Stapelüberwachungs- und Fehlerzeileninformationen verfügbar.

    Anbei ein Screenshot.

    Wenn ich die vorgeschlagene MSDN-Hilfe aufrufe, komm ich zu einer Website, die sagt: F1-Hilfe: Keine Übereinstimmung gefunden

    In den Microsoft Docs hab ich diese Seite gefunden, die hilft mir aber auch nicht wirklich weiter...: Windows Forms-Designer Fehlerseite (leider kein Link, weil wenn ich die Adresszeile von meinem Edge-Browser kopieren möchte, wird nicht die URL kopiert sondern nur der Seitentitel...

    Weiss jemand Rat, vor dieser Art von Fehler hatte ich schon immer Angst...
    @RodFromGermany

    Wah sorry den hab ich im Eifer des Gefechts glatt vergessen... X/

    Hab mal auf Englisch gesucht und Folgendes noch gefunden, ist aber schon relativ alt:

    social.msdn.microsoft.com/Foru…nt?forum=winformsdesigner

    Trifft das überhaupt auf mich zu und wie editiere ich den Fehler im Designer?
    Bilder
    • screenshot fehler designerladeprogramm.jpg

      268,83 kB, 1.600×900, 87 mal angesehen
    @kafffee Läuft das Programm als solches?
    Wenn ja:
    Mach Dir eine neue Form mit einem Button und dort schreibst Du rein:

    VB.NET-Quellcode

    1. Dim dlg = New NAME_DER_BETREFFENDEN_FORM
    In der Datei NAME_DER_BETREFFENDEN_FORM.Designer.vb in der Prozedur InitializeComponents() machst Du in der ersten Zeile einen Haltepunkt rein und arbeitest die mal zeilenweise durch. Ggf. knallt es an einer Stelle, die sehen wir uns dann näher an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    OK hab ich gemacht. Die .InitializeComponents() umfasst bei mir 1600 Zeilen. Hab also den Haltepunkt mal auf die erste und mal auf die letzte Zeile gesetzt. Die Benutzeroberfläche startet aber das Programm scheint nie an diesem Punkt anzukommen. Es wird nicht pausiert. Hab auch mal durchgescrollt rot unterstrichen wird auch nichts...

    Hattest du gemeint, die neu hinzugefügte Form anzeigen zu lassen und den Button zu drücken, so dass es dann vielleicht zu einem Fehler kommt? Ich habe deine Codezeile in die Button_Click gepackt ist das so richtig?

    Edit: Oder meintest du mit durcharbeiten immer wieder versuchen, Form1.vb [Entwurf] zu öffnen. Bin jetzt nämlich auf Debug Any CPU gegangen...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „kafffee“ ()

    kafffee schrieb:

    Hattest du gemeint, die neu hinzugefügte Form anzeigen zu lassen und den Button zu drücken, so dass es dann vielleicht zu einem Fehler kommt?
    Genau dies.
    Dazu musst Du die neue Form in den Projekteigenschaften als Startform auswählen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Nichts. Kein Fehler. Ob mit Haltepunkt oder ohne. Das Programm scheint gar nicht die .InitializeComponents zu durchlaufen. Es pausiert sich nicht. Aber du meintest schon die InitializeComponents() von der fehlerhaften Form, nicht die der neuen oder?

    Hab unter Dim dlg = New NAME_DER_BETREFFENDEN_FORM noch eine MessageBox gesetzt, die wird angezeigt...

    kafffee schrieb:

    Aber du meintest schon die InitializeComponents() von der fehlerhaften Form
    Ja welche denn sonst. ;)
    Im Default-Konstruktor vom Framework wird InitializeComponents() aufgerufen.
    ====
    Erstell mal bei NAME_DER_BETREFFENDEN_FORM sie Sub New() per Studio und setz da auf InitializeComponents() einen Haltepunkt.
    Das sieht so aus, dazu noch 2 Kommentarzeilen:

    VB.NET-Quellcode

    1. Sub New()
    2. InitializeComponents()
    3. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Hast recht alles Andere würde keinen Sinn machen. Hab ich gemacht.

    Ich hoffe das liegt nicht an einem externen Control, weil er will mir ja keine fehlerhafte Zeile anzeigen (s. Screenshot Post#3)

    Aber das würde eigentlich auch keinen Sinn machen denke ich denn zuletzt lief es ja noch und ich habe keine weiteren Controls zugefügt seitdem...

    Edit:
    @RodFromGermany

    Ok also die Sub New() hat sich bei mir selbstständig gemacht und hiess Sub Neu() aus irgend einem Grund. Als ich sie dann mit der Dropdown-Liste rechts oben aufgemacht hab hat sie sich wieder umbenannt in Sub New().

    Jetzt gibt es zwei Sub New(). Eine davon ist wie von dir beschrieben. Die andere ist ausgegraut und wenn ich draufklicke lande ich in der Public Class Hauptseite(). Siehe Screenshot. Kann das daran liegen?

    Mit dem Haltepunkt klappt es jetzt, der hält brav in der Sub New() bei InitializeComponent an... aber kein Fehler so weit.
    Bilder
    • screenshot sub new.jpg

      392,49 kB, 1.600×900, 90 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „kafffee“ ()

    kafffee schrieb:

    Ich hoffe das liegt nicht an einem externen Control,
    Rufe in der neuen leeren Form den Konstruktor dieses Controls auf:

    VB.NET-Quellcode

    1. Dim xx = New WAS_AUCH_IMMER()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    kafffee schrieb:

    da komm ich aber nicht dahinter wie ich den aufrufe...
    Zieh ihn auf eine Form und sieh Dir in deren InitializeComponents()-Prozedur an, wie es das Studio macht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Hast du meinen Edit in Post #9 gesehen? Das mit der doppelten Sub New()

    Bin nochmal auf eine Seite gestossen, relativ aktuell (von 2020), da heisst es, das sei ein bekanntes Problem. Da steht u.a.:

    Man soll die Form schliessen, das Projekt neu builden und dann die Form wieder öffnen. Was versteht man genau unter "neu builden". Einfach nochmal auf Debug Any CPU und Release Any CPU? Ist es damit getan oder muss man das anders machen?

    Hab das einfach mal so gemacht wie ich dachte und, oh Wunder, kam da eine bisher nicht dagewesene Fehlermeldung (s. Screenshot--> System.ComponentModel.Design.ExceptionCollection) wenn ich die Form wieder zum Entwurf geöffnet habe.

    Ansonsten hat das aber nicht geholfen. Vielleicht kannst du mit dieser Fehlermeldung was anfangen oder das Problem wenigstens einkreisen?

    An anderer Stele steht, das man die Verzeichnisse bin\debug, bin\release, obj\debug und obj\relöease löschen soll und das nochmal probieren. Ist das so ohne weiteres möglich, im Internet steht ja bekanntermassen viel wenn der Tag lang ist...

    Und dann steht da noch, dass es bei Controls, die Methoden/Ereignisse etc. zur Laufzeit anders verwenden als zur Entwurfszeit, es zu Problemen kommen kann. Da kommt mir natürlich gleich der Browser in den Sinn.

    Hab deinen Tipp mal befolgt und rausgefunden, wie man den über den Button in der neuen Form aufruft, aber da gabs auch keinen Fehler...
    Bilder
    • screenshot fehlermeldung.jpg

      187,62 kB, 1.600×900, 92 mal angesehen
    @kafffee Da ist jetzt eine zu viel.
    Lösch die, in der kein InitializeComponents() vorkommt.
    Sollte InitializeComponents() in keiner vorkommen, lösch die leere und füge InitializeComponents() als ersten Befehl in die Sub New() ein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Wie lösche ich die leere? Wie gesagt wenn ich da rechts oben draufklicke, springt er zur Public Class Hauptseite() (also die fehlerhafte Form). Da gibt es nichts rauszumlöschen. Bei der ausgegrauten Sub New() rechts oben in der Dropdown Liste ist links so ein kleines Symbol davor, ist so klein, dass mans kaum erkennen kann, sieht für mich aus wie ein Vorhängeschloss...s. Screenshot Post#9

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kafffee“ ()

    kafffee schrieb:

    Wie lösche ich die leere?
    Komplett markieren und die Taste [Entf] drücken.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @kafffee
    Räume Dein Projekt auf:
    Der Dateiname vor .vb ist der Name der Klasse in dieser Datei PUNKT (hatten wir schon).
    Wenn New() grau ist, ist es normalerweise in einer anderen Datei von Partial Class xxx implementiert. Das Schloss-Icon davor ist mir nicht geläufig.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Also hab mein Projekt mal aufgeräumt. Ich hatte da bisher Respekt vor, weil mir da nämlich mal ein Fehler unterlaufen war und dann nix mehr funktioniert hat...

    Wo finde ich diese Partial Class?

    Das Schlosssymbol hab ich gegoogelt. Das heisst "delegate", wenn ichs richtig erkenne.

    Das Projekt zu rebuilden hat leider auch nicht funktioniert...

    kafffee schrieb:

    Wo finde ich diese Partial Class?
    Im Studio: Aktiviere "Alle Dateien anzeigen" oder so in der Projekt-Anzeige, dann stehen sie nach dem Aufklappen alle beieinander:
    Form1.vb
    Form1.Designer.vb
    usw.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!