C# : Zugriff auf Klassenvariablen
Master99 13.08.2004 - 14:29 8179 5
Master99
verträumter realist
|
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: 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);
}
}
beide Klassen liegen im selben Namespace... mhm, TIA
|
murcielago
Dr. Doom
|
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.
|
Master99
verträumter realist
|
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?
|
murcielago
Dr. Doom
|
wenn du aus einer anderen klasse drauf zugreifen willst musst irgendwie eine referenz aufs form1-objekt mitgeben (im konstruktor zB)... in form1: MySubClass cls = new MySubClass(this);
in MySubClass (konstruktur->  : public MySubClass(Form1 parent)
dann kannst mit parent.MyTextBox drauf zugreifen. geht auch mit properties oda wie imma du willst...
|
Master99
verträumter realist
|
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 public class mySubClass
{
private Form1 parent1;
public MySubClass(Form1 parent)
{
...
parent1 = parent;
}
public void FUNKTIONSNAME()
{
parent1.XXX.......
}
}
kann man dass eh so machen oder macht man das anders?
|
murcielago
Dr. Doom
|
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 public string Username
{
set { mytextbox.text = value }
get { return mytextbox.text }
}
und dann kannst im subclass über parent.Username zugreifen. vorteil ist dass du im parent bestimmen kannst was bei einem zugriff passiert. mfg
|