2 Stimmen

VS WinForm Designer ändert immer den benutzerdefinierten Konstruktor?

Hallo an alle,

Ich verwende MSVS 2010 für ein Projekt mit C#/WinForms. Ich habe ein Objekt erstellt, das von der Gruppe Box abgeleitet ist, und ich habe den Konstruktor geändert, so dass er eine Integer-Variable beim Erstellen akzeptiert. Ich habe mein Objekt der Toolbox hinzugefügt und kann es erfolgreich im GUI-Designer einfügen.

Aber jedes Mal, wenn ich eine Änderung am Formular vornehme, wird mein benutzerdefinierter Konstruktor geändert.

Also brauche ich entweder eine Möglichkeit, VS so zu beheben, dass der Code sich nicht jedes Mal neu kompiliert, wenn ich ein Formular ändere, oder ich muss auf andere Weise den Code in meinem benutzerdefinierten Objekt beheben.

Im Grunde genommen erstelle ich, abhängig vom übergebenen Parameter, verschiedene Widgets und zeige sie dem Benutzer an. Aber ich habe dieses Objekt erstellt, weil ich versuche, Wiederholungen im Code zu vermeiden.

Könnte mir jemand bitte helfen?

Vielen Dank.

1voto

Der Standard-Konstruktor ohne Argumente muss erhalten bleiben und er sollte InitializeComponents aufrufen. Wenn das erledigt ist, sollte das Hinzufügen eines sekundären Konstruktors in Ordnung sein und der Designer sollte sich nicht damit beschäftigen.

Ich würde jedoch empfehlen, keine überladenen Konstruktoren zu verwenden, sondern stattdessen Methoden oder Eigenschaften freizulegen, um die gewünschte Aufgabe für ein WinForms-Steuerelement zu erledigen.

Wenn du in WinRome bist, tu wie die..


Beispiel eines sekundären Konstruktors:

// Lassen Sie diesen Konstruktor - in der X.designer.cs-Datei
public MyType () {
    InitializeComponents();
}

// Fügen Sie Ihren eigenen Konstruktor hinzu - in der X.cs-Datei
public MyType (int x) : this() {
    // ..
}

Aktualisierung: Vermeiden Sie es, die "X.designer.cs"-Dateien von Hand zu bearbeiten; diese sind für den Designer. Bearbeiten Sie stattdessen die gleichlaufende "X.cs"-Datei. Partielle Klassen werden verwendet, um den Designer-Code und Ihren benutzerdefinierten Code zwischen diesen beiden Dateien aufzuteilen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X