| 

.NET C# Java Javascript Exception

4
Hi zusammen,
ich würde gerne von einer Klasse aus ein Label in einer Form einen anderen Text zuweisen.
Ist sowas möglich ?
class functions
{
public void test()
{
Form1.Label1.Text = "TEST";
}
}

funktioniert leider nicht :(
11.08.2011
DaTaBeRt 416 1 7
4 Antworten
4
Erste Möglichkeit:
class functions
{
...
functions(Form1^ form)
{
ParentF = form;
}
public void test()
{
form->pubLabel->Text = "TEST";
}
private Form1^ ParentF;
...
}

...nicht getestet, aber so oder so ähnlich sollte es gehen (allerdings code ich nicht in C#, weshalb vllcht. die Notationen noch nicht ganz passen...)

2. Möglichkeit (und wahrscheinlich eleganter):
class functions
{
public String^ test()
{
return "TEST";
}
}

In der Form kannst du dann z.B. sagen:
...
Label1.Text = func->test();
...

, wobei func eine Instanz der Klasse functions ist...
Wie gesagt ohne Test und nur um dir auf die Sprünge zu helfen.
11.08.2011
Eiger 1,9k 2 9
Eiger 1,9k 2 9
Danke mal schauen ob ich damit weiterkomme :)
DaTaBeRt 11.08.2011
2. möglichkeit funktioniert bestens *thumbs up*
DaTaBeRt 11.08.2011
2
Hallo

warum nicht der Methode die Label Instanz übergeben und ändern?

Class Functionen
{
public void ChangeLabel(Label lbl)
{
lbl.Text = "Irgendwas";
}
}

Damit ist es auch egal welches Label auf welchem Formular geändert werden soll.

Gruß
Joachim
11.08.2011
KrauseFFM 131 2
Stimmt, das geht auch aber im endeffekt ist es egal ob ich den wert des labels in der der methode "ChangeLabel" oder in der Form zuweise, oder?
DaTaBeRt 15.08.2011
1
Klar ist es egal, es geht ja nur darum die Text Property des Labels zu ändern. Hier bin ich davon ausgegangen das du eine Klasse hast und irgendeine Methode soll den Wert ändern, was jetzt unabhängig von der Forminstanz passiert, weil einfach das Label Objekt übergeben wird. Wenn es im Form geändert werden soll dann muss deine Methode ja nur einen String zurückgeben.

Label.Text = classInstanz.Methode();
KrauseFFM 15.08.2011
1
Hallo,

Du kannst z.B. in der Form ein public property anlegen, oder beim Instaziieren der Klasse test eine Referenz auf die Form übergeben. Beides finde ich nicht besonders sauber.

Leg doch eine öffentliche Methode in der Klasse deren Rückgabewert dann den "Test" String ausgibt. Aus der Form heraus kannst Du dann auf die öffentliche Methode zugreiffen und das Label1 setzen

Gruß
11.08.2011
LutzJ 1,3k 1 8
Hast du mir vielleicht ein lkeines Code-Beispiel?
DaTaBeRt 11.08.2011
Meine Möglichkeit Nr. 2 und 3 entspreicht der Lösung von Eiger, also alles gut aus meiner Sicht ;-)
LutzJ 11.08.2011
0
Ich befürchte, du hast einen Denkfehler.
Ich gehe einmal davon aus, dass deine Klasse nicht die Instanz der Form1 hält. Das wäre trivial.
Nehmen wir einmal an, es werden 3 Instanzen von Form1 erzeugt:
Form1 f1 = new Form1();
f1.Show();
Form1 f2 = new Form1();
f2.Show();
Form1 f3 = new Form1();
f3.Show();

Nun möchtest du den Text des Labels ändern:
Form1.Label1.Text = "test";

Auf welche der 3 instanziierten Fenster sollte sich das auswirken?

Falls du doch über die Instanz den Text ändern möchtest, kannst du z.B. eine öffentliche Methode hinzufügen, aber ich glaube, das war nicht dein Anliegen.
11.08.2011
Martin Fuchs 1,4k 9
hmm :D wenn ich das so instantiiert hätte würde ich den text des labels wie folgt ändern wollen:
f1.Label.Text = "test";
aber mein Form1 ist beim ausführen der Klasse schon von woanders aus instantiiert und offen.
DaTaBeRt 11.08.2011
Ja klar. Das meinte ich auch so. Die beiden Code-Schnipsel sind in zwei verschieden Klassen. Sonst wäre es ja noch trivialer ;-)
Martin Fuchs 11.08.2011
trivial oder nich trivial das ist die frage ^^
egal! Danke für deine Antwort!
DaTaBeRt 11.08.2011

Stelle deine .net-Frage jetzt!