Entwickler-Ecke
C# - Die Sprache - auf label in anderer form zugreifen
sunday01 - Di 26.05.09 13:11
Titel: auf label in anderer form zugreifen
hallo,
also folgendes:
ich habe 2 Formulare
in dem zweiten berechne ich einen wert nach einer formel(greife auf werte in textboxen zurück) und wenn man in diesem formular auf ok button drückt soll im formular1 auf einem label der wert erscheinen.
nun weiß ich nicht wie man darauf zugreift weil das zweite formular kennt ja das label vom ersten formular nicht :?:
:( hoffe mir kann geholfen werden, danke :)
Nemag - Di 26.05.09 15:00
Servus
an irgend einer Stelle werden beide Forms sich ja kennen und dann kannst du auch auf Controls der jeweiligen zugreifen.
gibt da einige möglichkeiten:
- Label der Form auf public setzen und den Text direkt setzen (hehe .. dafür werden mich jetzt einige steinigen)
- Form.Controls.Find(...)
- oder Ereignisbehandlung
je nachdem wie deine Forms auf gerufen werden Form1 -> Form2 oder andersrum oder komplett von ner dritten Klasse???
sunday01 - Di 26.05.09 15:37
mh also in form1 rufe ich form2 auf, dann berechne ich was
-> label9.Text = Convert.ToString(rechnung);
label9 ist auf meiner form2, da funktioniert es dann auch.
ich möchte aber das das ergebnis der rechnung auf einem label in form1 erscheint (soll durch buttonclick aktiviert werden)
und form2 kennt aber nicht das label aus form1
hab des eben mal public gemacht, das hat aber irgendwie nix gebracht und auch diese control fkt besitzt form1 irgendwie gar nicht..
hast du vll nicht noch irgendein beispiel?
:wink:
JüTho - Di 26.05.09 16:30
Nemag hat folgendes geschrieben : |
(hehe .. dafür werden mich jetzt einige steinigen) |
So ist es, und das ist überhaupt nicht lustig. Es hat schon seinen Grund, warum
Controls standardmäßig als
private deklariert werden. Einer der
Grundsätze der OOP ist, dass verschiedene Klassen keinerlei Kenntnisse haben dürfen über ihre Details, sondern über fest definierte Schnittstellen miteinander kommunizieren.
Das "rufende" Formular darf Zugriff auf das "gerufene" haben, aber niemals umgekehrt. Dieser Datenaustausch erfolgt über Eigenschaften oder Methoden, aber nicht direkt auf das Control. Beispiel mit Methode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public void SetLabelCaption(string content) { this.myLabel.Text = content; }
form2.SetLabelCaption("schreib das hin"); |
Wenn das "rufende" Formular automatisch Informationen vom "gerufenen" erhalten soll, geht das über
Delegates. Das ist etwas komplizierter und nicht mit einem Beispiel mit 10 Zeilen zu erklären; ich verweise deshalb auf
[FAQ] Kommunikation von 2 Forms [
http://www.mycsharp.de/wbb2/thread.php?threadid=5960] und die weiteren dort genannten Links.
Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!