Autor Beitrag
sunday01
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 26.05.09 13:11 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 26.05.09 16:30 
user profile iconNemag hat folgendes geschrieben Zum zitierten Posting springen:
(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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
//  im untergeordneten Formular:
public void SetLabelCaption(string content) 
{
   this.myLabel.Text = content;
}

//  im übergeordneten Formular:
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 und die weiteren dort genannten Links.

Jürgen