Poperties in Dialogklasse


CopWorker

Mitglied
Hallo zusammen,

bisher habe ich nur C# Konsolenanwendungen erstellt in den ich die "properties" verwende.
Bei Instanzieren einer Klasse konnte ich mit der Instanz dieser Klasse auf private Variablen dieser Klasse zugreifen.
Und zwar über die "properties"
C#:
private bool BClass1OverwriteFile = false;
static public Convert conv = new Convert();
conv.OverwriteFile = BClass1OverwriteFile ;
In der Klasse selber sieht das so aus.
C#:
private bool BClass2OverwriteFile = false;

public bool OverwriteFile
{
    set { BClass2OverwriteFile = value; }
}

Gilt da das selbe bei Dialogklassen?
Da rufe ich diese doch anders auf.
C#:
System.Windows.Forms.Application.Run(new MainDialog())
Da vermisse ich die Instanz auf die ich dann auf die "properties" zugreifen kann.

Auf die Schnelle habe ich auch bei google nichts entdeckt.

Vielleich hilft mir trotzdem jemand.

Vielen Dank.
MfG. CopWorker
 

Spyke

Premium-User
C#:
System.Windows.Forms.Application.Run(new MainDialog());
es wird nur kein Feld direkt deklariert da es nicht benötigt wurde.

du kannst auch schreiben
C#:
MainDialog meiner = new MainDialog();
System.Windows.Forms.Application.Run(meiner);

Dir steht frei das entsprechende Objekt schon vorher zu instanziieren, deine Sachen zu setzen und dann weiterzugeben.

Run ansich ist ja auch nur eine Funktion der du über einen Parameter eine Variable/Wert (in diesem Fall vom Typ Form) weiterreichst.
 

CopWorker

Mitglied
Hallo Spyke,

vielen Dank für den Tipp.
Funktioniert. Ist eigentlich logisch.
Blos darf ich die Parameter die ich über die Properties der Klasse "meiner" übergebe
noch nicht im Konstruktor der Klasse "meiner" verwenden.
Denn die Properties werden erst nach dem Aufruf des Konstruktors angesprungen.

Macht aber nichts, das ist gerade das was ich brauche.
Denn ich möchte der Klasse "meiner" eine große Menge Parameter übergeben.
Das ist über die Properties, meiner Meinung nach, eleganter.

Nochmals vielen Dank.
Grüße von CopWorker
 

Spyke

Premium-User
Klingt so als wenn du "zu viel Code" im Konstruktur hast.
Der Konstruktur sollte sich nur um die wesentlichsten Sachen kümmern, in der Regel Variablen setzen und kleinere initialisierungssachen.

Vorallem bei der Klasse Form bietet es sich an alles weitere/"komplizierte" in das Shown Ereignis auszulagern (oder besser noch direkt die OnShown Methode überschreiben).
Dort kannst du dann auch bessere Fehlerbehandlung nach vorne bringen, denn dann ist auch die UI entsprechend schon geladen.
 

CopWorker

Mitglied
Hallo Skype,

das ist so.
Ich habe mich aber auf das wesentliche beschränkt.
Die Fülle an Code ist mit den Jahren immer gewachsen.
D. h. Ich ermittle eigentlich nur eine Anzahl von Freigaben und Benutzerrechte.
Die wiederum lese ich aus der app.config des Projekts und aus verschiedenen *.ini bzw. *.cfg Dateien aus.
In Abhängigkeit, welche Instanz den Dialog aufruft, verhalten sich diese anders.

Du hast recht, ich werden diese Anhäufung an Code auslagern.

Vielen Dank dennoch.
Grüße von CopWorker