Benutzer mit den meisten Antworten
Formular wird nach Vererbung im Designer nicht angezeigt

Frage
-
Hallo zusammen,
wie die Überschrift schon sagt, habe ich aktuell Probleme mit einem Formular, das von einem anderen Formular abgeleitet ist. Das Form von dem abgeleitet wurde, hat einen Konstruktor mit mehreren Parametern.
Das Kind-Formular, lässt sich ohne Probleme instanziieren und wird angezeigt, aber wenn ich versuche dieses Formular im Designer zu öffnen, bekomme ich eine Fehlermeldung und das Formular wird nicht angezeigt. In der Fehlerbeschreibung ist ein Verweis darauf, dass er den Konstruktor nicht finden kann.
Was mache ich denn falsch bzw. ist es normal, dass diese abgeleiteten Forms, die von einer Form mit mehrparametrigem Konstruktor abgeleitet sind, gar nicht im Designer angezeigt werden können?
Antworten
-
Hallo,
für den Designer muss ein parameterloser Konstruktor verfügbar sein,
da er nicht wissen kann, wie er die Parameter versorgen soll.Siehe auch: http://stackoverflow.com/questions/5729015/inhert-from-form-which-has-parameters
und Visuelle Vererbung in Windows FormsGruß Elmar
- Als Antwort markiert SPDeveloperXP Freitag, 10. Juni 2011 07:48
-
Hallo S.,
Obwohl es nicht diesen Anschein erweckt, instanziiert der Designer nie das Formular, das gerade entworfen wird, sondern dessen Basisklasse.
Wenn Du also ein Form1 : Form hast, wird System.Windows.Forms und nicht Form1 instanziiert. Um dies machen zu können, braucht der Windows Forms Designer einen parameterlosen Konstruktor in der Basisklasse, wie Elmar das schon ausführte. Anders geht's nicht. Woher sollte der Forms Designer denn die notwendigen Argumente her nehmen? - Füg' also einfach noch einen parameterlosen Konstruktor zu Deiner Formular-Basisklasse hinzu, dann gibt der Designer Ruhe.How does the Windows Forms Designer in Visual Studio load a Form?
http://blogs.msdn.com/b/rprabhu/archive/2004/12/12/280823.aspxGruß
Marcel- Als Antwort markiert SPDeveloperXP Freitag, 10. Juni 2011 07:48
Alle Antworten
-
Hallo,
für den Designer muss ein parameterloser Konstruktor verfügbar sein,
da er nicht wissen kann, wie er die Parameter versorgen soll.Siehe auch: http://stackoverflow.com/questions/5729015/inhert-from-form-which-has-parameters
und Visuelle Vererbung in Windows FormsGruß Elmar
- Als Antwort markiert SPDeveloperXP Freitag, 10. Juni 2011 07:48
-
Hallo S.,
Obwohl es nicht diesen Anschein erweckt, instanziiert der Designer nie das Formular, das gerade entworfen wird, sondern dessen Basisklasse.
Wenn Du also ein Form1 : Form hast, wird System.Windows.Forms und nicht Form1 instanziiert. Um dies machen zu können, braucht der Windows Forms Designer einen parameterlosen Konstruktor in der Basisklasse, wie Elmar das schon ausführte. Anders geht's nicht. Woher sollte der Forms Designer denn die notwendigen Argumente her nehmen? - Füg' also einfach noch einen parameterlosen Konstruktor zu Deiner Formular-Basisklasse hinzu, dann gibt der Designer Ruhe.How does the Windows Forms Designer in Visual Studio load a Form?
http://blogs.msdn.com/b/rprabhu/archive/2004/12/12/280823.aspxGruß
Marcel- Als Antwort markiert SPDeveloperXP Freitag, 10. Juni 2011 07:48