URL: https://www.overclockers.at/coding-stuff/c_zugriff_auf_klassenvariablen_121866/page_1 - zur Vollversion wechseln!
Hi Leute, ich weiß, die frage hört sich jetzt recht banal an, aber wenn ich jetzt ne normale Winforms-Anwendung habe (also mit ein paar textboxen, progressbar usw. in der Klasse Form1), wie kann ich dann von einer anderen Klasse den Wert eines Controls ändern bzw. lesen?
die controls die angesprochen werden sind natürlich public& enable und weder gelockt oder ReadOnly...
ich hätt des mit nem klassenkonstruktor versucht, dann komm ich auch auf die (public) controlls und ihre events, aber ich kann weder werte lesen noch ändern.
fehlermeldung bekomm ich auch keine!
Codebeispiel:
beide Klassen liegen im selben Namespace...Code:public class Form1 : System.Windows.Forms.Form { public System.Windows.Forms.TextBox TEXTBOXNAME; .... } public class MDS { public void FUNKTIONSNAME() { Form1 frm = new Form1(); frm.TEXTBOXNAME.Text = "Test"; //bzw. das geht auch nicht: MessageBox.Show(frm.TEXTBOXNAME.Text); } }
erklärs nochmal besser, willst du die form erst erzeugen während der laufzeit oder is form1 dein hauptwindow was schon angezeigt wird? weil wenn ja, dann hilft dir dein new Form1() nix, weil das eine neue instanz anlegt.
Form1 ist mein hauptwindow das schon angezeigt wird...
mhm, auf das mit der neuen instanz hab ich gar nicht gedacht... hast natürlich recht!
aber wie greif ich jetzt auf die bestehende controls im form zu?
wenn du aus einer anderen klasse drauf zugreifen willst musst irgendwie eine referenz aufs form1-objekt mitgeben (im konstruktor zB)...
in form1:
Code:MySubClass cls = new MySubClass(this);
Code:public MySubClass(Form1 parent)
yuhu... thx!
also ich hab dann in "MySubClass" noch ne variable "parent1" erstellt und die im Konstruktor dann mit der übergabevariable gleichgesetzt, damit man dann von allen classenfunktionen zugriff hat.
also
Code:public class mySubClass { private Form1 parent1; public MySubClass(Form1 parent) { ... parent1 = parent; } public void FUNKTIONSNAME() { parent1.XXX....... } }
haut scho hin, is zwar ned schön aber bitte
du solltest ned direkt auf die textbox zB zugreifen, besser über methoden oder properties...
zB im form1 hast drin
Code:public string Username { set { mytextbox.text = value } get { return mytextbox.text } }
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025