Laden...

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

Letzter Beitrag vor 12 Jahren 7 Posts 1.454 Views
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

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

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

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.

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

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 😉

@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.....