Entwickler-Ecke

WinForms - Vererbung: Wie Eigenschaft auf aufrufender Form ändern


MarcinD - Di 23.11.10 07:02
Titel: Vererbung: Wie Eigenschaft auf aufrufender Form ändern
Hallo zusammen,

ich bin was OOP angeht noch ein echter Rookie. Ich habe das Prinzip verstanden, aber leider verstehen sich Theorie und die Praxis nicht immer so, wie ich das will.

Ich habe eine Textbox, die von einer "Master-Textbox" abgeleitet wird. In dieser Textbox definiere ich Sachen, wie das "nicht erklingen des Beep" bei Enter und das "automatische weiterspringen ins nächste Feld (wie TAB) mit Enter".

Diese Textbox habe ich auf einem Form mit einem Speichern Button, der beim Start inaktiv ist. Sobald an der Daten was geändert wird, soll dieser aktiv werden und das Formular soll den Status "Daten geändert" bekommen.

Im Moment löse ich das so (direkt im Formular):

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
        
   private void btnSpeichern_aktivieren(bool Aktivieren)
   {
      //Aktivieren der Speichern Schaltfläche 
      this.btnSpeichern.Enabled = Aktivieren;
      this.locboolgeaendert = Aktivieren;
   }

   private void tbBenutzer_TextChanged(object sender, EventArgs e)
   {
       //Ändern Status der Speichern Schaltfläche
       this.btnSpeichern_aktivieren(true);
   }


Das doofe ist, dass ich dieses für jede Textbox machen muss, die auf dem Formular ist. Dies ist unübersichtlich und umständlich. Wie kann ich der Textbox in der "Master-Version" sagen, dass Sie das automatisch machen soll und auf dem Formular, auf dem sie gelegt wir automatisch diese Eigenschaft ändert?

Geht sowas überhaupt?

Danke und Gruß

Martin


Necaremus - Di 23.11.10 09:28

du kannst ein event mehreren textboxen zu weisen.
guck einfach im designer unter dem TextChanged-Event und gebe da einfach deinen textboxen dieses event an.

du könntest es sicherlich auch direkt im code lösen (indem du mit ner foreach deine controls durchratterst und deinen textboxen so das event zuweist), wäre denke ich für den anfang aber etwas zu overkill :)


MarcinD - Di 23.11.10 09:48

user profile iconNecaremus hat folgendes geschrieben Zum zitierten Posting springen:
du kannst ein event mehreren textboxen zu weisen.
guck einfach im designer unter dem TextChanged-Event und gebe da einfach deinen textboxen dieses event an.


Oh verdammt. :oops:

Manchmal ist eine einfach Lösung so nah. Da hätte ich auch selber drauf kommen können. Aber manchmal steht man sich selber und der Zwang nach Standalisierung im Wege.

Aber nur interesseshalber:
Kann man die Objekte auf der Form, wo die abgeleitete Klasse drauf liegt, in der Klasse, von der abgeleitet wird, ansprechen. (geiler Satz :lol: Wenn ich mich mit Kommas verhauen hab = Sry dafür)


LSanchez - Di 23.11.10 12:35

Mit FindForm bekommst Du die Form, auf der Das Objekt ist.

Gruß

Luis Sanchez

Beispiel:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void button2_Click(object sender, EventArgs e)
{
      // Get the form that the TextBox control is contained within.
      Form myForm = textBox1.FindForm();
      // Set the text and color of the form containing the TextBox.
      myForm.Text = "The Form of My Control";
      myForm.BackColor = Color.Red;
            
}