![]() |
|
|||||||
| Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp Forum microsoft.public.de.german.entwickler.dotnet.csharp |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#1
|
|||
|
|||
|
Hi Leute,
ich habe das Problem, dass ich ein generisches Formular, welches wiederum von einem generischen Formular erbt nicht mehr im Designer öffnen kann. Es kommt dann immer folgender Fehler: ..... Der Designer konnte für diese Datei nicht angezeigt werden, da keine der enthaltenen Klassen definiert werden kann. Der Designer hat folgende Klassen in der Datei überprüft: Form2 -- Die WindowsFormsApplication3.Form1-Basisklasse konnte nicht geladen werden. Stellen Sie sicher, dass auf die Assembly verwiesen wurde und alle Projekte erstellt wurden. ..... Hier der Beispielcode: ---Datei Programm.cs------------ using System; using System.Windows.Forms; namespace WindowsFormsApplication3 { static class Program { /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(fals e); Application.Run(new Form2<TestObject>()); } } } ---------------------------------------- -----Datei Class1.cs------------------- namespace WindowsFormsApplication3 { public class TestObject { } } ---------------------------------------- -----Datei Form1.cs------------------- using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1<TItem> : Form { public Form1() { InitializeComponent(); } private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) components.Dispose(); base.Dispose(disposing); } private void InitializeComponent() { this.SuspendLayout(); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(555, 155); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } } } ---------------------------------------- -----Datei Form2.cs------------------- namespace WindowsFormsApplication3 { public partial class Form2<TItem> : Form1<TItem> { public Form2() {InitializeComponent();} private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) components.Dispose(); base.Dispose(disposing); } private void InitializeComponent() { this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(555, 155); this.Name = "Form2"; this.Text = "Form2"; this.ResumeLayout(false); this.PerformLayout(); } } } ---------------------------------------- Mache ich da einen Fehler, oder geht das so gar nicht wie ich mir das vorstelle? Das Programm an sich läuft übrigens einwandfrei. Auch das Formular "Form2" wird fehlerfrei angezeigt. Ich kann es nur nicht mehr im Designer öffnen. Vielen Dank für Eure Hilfe Carsten |
|
|
||||
|
||||
|
|
|
#2
|
|||
|
|||
|
Hallo Carsten,
der Designer muss eine Instanz der Basisklasse anlegen. Diese darf daher nicht generisch sein. Gruß Joachim -- Dr. Joachim Fuchs - Autor - Dozent - Softwarearchitekt http://www.fuechse-online.de/beruflich/index.html - http://vbnet.codebooks.de |
|
#3
|
|||
|
|||
|
Hallo Joachim,
vielen Dank für Deine schnelle Antwort. > der Designer muss eine Instanz der Basisklasse anlegen. Diese darf daher > nicht generisch sein. Heist das nun, dass es so wie ich es wollte, Vererbung von einem generischen Formular, überhaupt nicht geht, oder muss ich das nur anders programmieren? Gruß Carsten |
|
#4
|
|||
|
|||
|
Hallo Carsten,
> Heist das nun, dass es so wie ich es wollte, Vererbung von einem > generischen Formular, überhaupt nicht geht, > oder muss ich das nur anders programmieren? doch, natürlich geht das. Aber dann kann man halt den Designer nicht mehr benutzen. Gruß Joachim -- Dr. Joachim Fuchs - Autor - Dozent - Softwarearchitekt http://www.fuechse-online.de/beruflich/index.html - http://vbnet.codebooks.de |
|
#5
|
|||
|
|||
|
Hallo Joachim,
> doch, natürlich geht das. Aber dann kann man halt den Designer nicht mehr > benutzen. Das ist aber gar nicht schön. :-( Geht es vielleicht mit VS2010, oder muss da Microsoft generell noch etwas tun, damit so etwas funktioniert? Ist diese Konstellation den eigentlich so ungewöhnlich? Gruß Carsten |
|
#6
|
|||
|
|||
|
hallo Carsten,
Carsten Ilwig wrote: > Mache ich da einen Fehler, oder geht das so gar nicht wie ich mir das > vorstelle? Siehe http://stackoverflow.com/questions/1...ric-forms-in-c Wenn ich darüber so nachdenke, klingt das aber nach einem Fall von Refaktorisierung hin zu MVC/P. mfG --> stefan <-- |
|
#7
|
|||
|
|||
|
Hallo Carsten,
> Geht es vielleicht mit VS2010 nein, wie sollte es auch. Damit der Designer etwas anzeigen kann, muss er, wie gesagt, die Basisklasse instanzieren und den seblst generierten Code aus InitializeComponent abarbeiten. Wenn sich die Basisklasse (aus welchen Gründen auch immer) nicht instanzieren lässt (generisch, abstract etc.), dann kann der Designer auch nichts anzeigen. Das wird auch in VS 2010 nicht anders sein. > Ist diese Konstellation den eigentlich so ungewöhnlich? ja, sofern man auf den Designer angewiesen ist. Wer den Designer nicht nutzt, sondern die Oberfläche dynamisch aufbaut, kann natürlich bzgl. Vererbung aus dem Vollen schöpfen. Vererbung ist nicht immer die beste Lösung, schon gar nicht bei Fensterklassen. Gruß Joachim -- Dr. Joachim Fuchs - Autor - Dozent - Softwarearchitekt http://www.fuechse-online.de/beruflich/index.html - http://vbnet.codebooks.de |
|
#8
|
|||
|
|||
|
Joachim Fuchs wrote:
> Vererbung ist nicht immer die beste Lösung, schon gar nicht bei > Fensterklassen. Diese Aussage findet absolut meine Zustimmung. In der Vergangenheit sind mir nur sehr absurde Konstellationen von "visual inheritance" über den Weg gelaufen, die man mit User Controls und einfacher Komposition in aller Regel deutlich eleganter und sinnvoller hätte abbilden können. -- Immo Landwerth |
|
#9
|
|||
|
|||
|
Vielen Dank an alle Beteiligten. :-)
Mit dem UserControl hatte ich bereits geliebäugelt, die Variante mit dem vererbten Form ging für mich halt schneller. Aber na gut, dann werde ich wohl nun doch auf UserControls umsteigen. Mit freundlichen Grüßen Carsten |
|
|
|
|
![]() |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| Typumwandlung bei generischen Klassen | Gerrit Kuhlendahl | Newsgroup microsoft.public.de.german.entwickler.dotnet.vb | 8 | 11-02-2009 05:12 PM |
| Casting von generischen Listen | Thomas Kehl | Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp | 5 | 11-02-2008 01:58 PM |
| Re: Sortieren von generischen Listen | Andreas Hartl | Newsgroup de.comp.lang.java | 0 | 10-04-2007 07:39 AM |
| Re: Sortieren von generischen Listen | Wanja Gayk | Newsgroup de.comp.lang.java | 0 | 10-01-2007 08:23 PM |
| Re: Sortieren von generischen Listen | Stefan Ram | Newsgroup de.comp.lang.java | 2 | 10-01-2007 08:21 AM |