Laden...

Nicht modale Form, soll nach außen ein Event werfen, wenn ein Button gedrückt wurde

Erstellt von Stipo vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.468 Views
Stipo Themenstarter:in
699 Beiträge seit 2007
vor 13 Jahren
Nicht modale Form, soll nach außen ein Event werfen, wenn ein Button gedrückt wurde

Hallo zusammen,

ich habe mal eine Frage zu meinem Entwurf einer Nested Class.

Folgende Ausgangssituation soll gegeben sein.
Es gibt eine Form, die diverse Daten erfassen soll. Die Form soll nicht Modal laufen. In der Form soll es einen Button geben, der einen Event wirft, wenn man Daten erfasst hat und möchte diese dann verarbeiten lassen.

Hier mal exemplarische Daten, wie ich das aufgebaut habe:


    public class OuterClass : Form
    {
        private InnerDataClass innerClass = new InnerDataClass();

        public InnerDataClass InnerClass
        {
            get { return innerClass; }
        }

        public class InnerDataClass
        {
            public string ValueString;
            public int ValueInt;
        }

        public void DoSomething()
        {
            // Do Something 
            MethodeAddInnerClassValues("Ich bin ein String Value", 1);
            // Do Something
        }

        private void MethodeAddInnerClassValues(string valueString, int valueInt)
        {
            innerClass.ValueString = valueString;
            innerClass.ValueInt = valueInt;
        }
    }

Und aufrufen möchte ich das in etwa dieser Form:


    OuterClass o = new OuterClass();
    o.DoSomething();
    o.Show();
    // ...
    MessageBox.Show(o.InnerClass.ValueString);
    // ...

Wobei das alles rein exemplarischer Code ist, welcher keine bedeutung hat. Mir geht es rein um die Implementierung der Nested Class.

Nun meine Fragen.
Habe ich die Nested Class da richtig implementiert, oder begebe ich mich damit auf dünnes Eis und kann irgendwann einbrechen.

Wie kann es sein, das ich eine Nested Class nicht aufrufen kann, wenn ich die Classe und die Felder darin statisch mache. Ich meine, das eine Instanz einer Klasse nicht eine Statische Klasse ansprechen kann. Im Internet hab ich folgendes gefunden A Tutorial on Nested Classes in C#.
Aber so richtig hat mir das nicht geholfen. Ich vermute aber, das es dort geht, weil die Main Methode ja auch statisch ist. Bin mir dem ganzen aber noch nicht ganz sicher.

Grüße Stephan

Gelöschter Account
vor 13 Jahren

Habe ich die Nested Class da richtig implementiert, oder begebe ich mich damit auf dünnes Eis und kann irgendwann einbrechen.

prinzipiell ist da ncihts von einer nested class zu sehen... keine ahnung ob du es richtig implementiert hast... im beispiel hast du nur ein feld wo du 2 werte setzt.

generell sind nested classes eher ein hilfskonstrukt wenn die beinhaltende klasse sehr umfangreich ist und daher es einfacher wäre, wenn diese ein oder zwei hilfsklassen hätte die nur ihr gehören. ansonsten sollte man nested classes meiden.

F
60 Beiträge seit 2010
vor 13 Jahren

das hat nix mit nested classes zu tun sondern heißt _composition _und ist meist der vererbung vorzuziehen. von daher gut, aber am thema vorbei 😃

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Stipo,

ich sehe keinen Zusammengang zwischen dem, was du als Ziel beschriebst und dem Code, was du an Code zeigst. Fensters solltest du grundsätzlich als eigenständige, möglichst unabhängige Klassen implementieren. Wenn Form1 dann Form2 erzeugt, kann Form1 vor dem Anzeigen von Form2 schnell noch das Event von Form2 abonnieren. Eine darüberhinausgehende Verbindung oder gar Verschachtelung ist weder erforderlich noch erwünscht.

Was das Event angeht, das gefeuert werden soll, wenn das Click-Event des Buttons eintrifft, siehe [FAQ] Eigenen Event definieren.

herbivore