Laden...

Mehrere partiale Klassen: Verhindern das der Designer eine leere Form anzeigt

Erstellt von hilefoks vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.398 Views
H
hilefoks Themenstarter:in
10 Beiträge seit 2012
vor 11 Jahren
Mehrere partiale Klassen: Verhindern das der Designer eine leere Form anzeigt

Moin,

um meinen Code etwas besser zu strukturieren verwende ich mehrere partielle Klassen. Ich habe also z.B:

MeinDialog.cs
MeinDialog.Designer.cs
MeinDialogFoo.cs
MeinDialogBar.cs

Bei einem Doppelklick auf z.b. MeinDialogFoo.cs öffnet Visual Studio 2008 eine leere Form. Ich möchte aber nur bei MeinDialog.cs eine Form geöffnet haben, nicht bei den anderen (was bei der MeinDialog.Designer.cs ja auch funktioniert).

Wie kann ich das erreichen?

MfG

F
10.010 Beiträge seit 2004
vor 11 Jahren

Schon dieser Ansatz zeigt das hier etwas falsch ist.
Warum benötigst Du so ein Konstrukt überhaupt?

T
111 Beiträge seit 2005
vor 11 Jahren

Hallo

@FZelle
Die Diskussion gab es hier doch schon einige male. Ich bin auch jemand der lieber mit Partial-Klassen statt mit #Regions arbeitet. Ist halt wie ein Ordner mit Trennblättern.

@hilefoks
Du kannst Visulastudio so einstellen, das per default der Editor aufgemacht wird. (Rechtsklick auf das File im Solutionexplorer, "Open with.." wählen und dort den "CSharp Editor" als Default setzen). Danach kannst Du ja im Sourcecode die Ansicht zwischen Code und Designer umschalten.

Thomas

F
10.010 Beiträge seit 2004
vor 11 Jahren

Auch Regions zeigen das man zu viel in eine Klasse getan hat.
Es gibt seeehr selten einen vernünftigen Grund so etwas selber zu erstellen.

H
hilefoks Themenstarter:in
10 Beiträge seit 2012
vor 11 Jahren

Moin,

danke für die Antworten.

@FZelle
Ja - ich würde die Form auch lieber in kleinere UserControls oder dergleichen aufsplitten. Geht aber nicht: Das Programm existiert bereits 10 Jahre, die Basisklasse die verwendet werden muss macht ganz viel Zeug automatisch (von Enter like Tab bis hin zu Datenbankabfragen bei Feldern mit bestimmten Namen) und funktioniert nicht mehr korrekt, wenn ich Teile davon in UserControls stecke. Also das UserControl funktioniert das schon noch, aber die Funktionen aus der Basis-Klasse nicht mehr.

@thomas.at
Schon ein ganz guter Vorschlag. Aber dazu müsste ich die Entwicklungsumgebungen der anderen Entwickler verändern -> geht nicht. Ich hatte gehofft man könnte das irgendwie (manuell) in der sln oder dem csproj File einrichten.

Inzwischen habe ich aber gemerkt das Visual Studio (2008) ohnehin nicht besonders gut mit mehreren partiellen Klassen klar kommt. Z.b. erzeugt es einen Event-Handler in der "MeinDialog.cs" Datei neu, obwohl es diesen in "MeinDialogFoo.cs" schon gibt. Na ja... läuft wohl auf #region hinaus.

Trotzdem vielen Dank!

MfG

4.931 Beiträge seit 2008
vor 11 Jahren

Hallo,

was du manuell machen kannst, ist, in der csproj-Datei die "partial"-Dateien als Unterelemente von der Hauptdatei anzulegen:


<Compile Include="MeinDialog.partial.cs">
   <DependentUpon>MeinDialog.cs</DependentUpon>
</Compile>

Dann erscheinen diese im Projekt-Explorer unterhalb der "MeinDialog.cs" - wie die "MeinDialog.designer.cs". Dann müßte der VS-Designer damit besser klar kommen - eine Garantie kann ich dafür aber nicht geben 😉

F
10.010 Beiträge seit 2004
vor 11 Jahren

@hilefoks:
Habe ich neulich auch erst bei einem Kundenprojekt gehabt.
Da waren in der Hauptform knapp 20.000 Zeilen Code.

Hat 2 Tage gedauert die ganzen DB Sachen vernünftig in einen DAL zu bringen, und den restlichen Code in Klassen und UserControls zu bringen.
War zwar viel Arbeit und viel geteste aber die Zeit die man dadurch später spart.....