8digit
Goto Top

C-Sharp Label aus anderer Klasse heraus ändern

Hi,

in einer C# Form habe ich ein Label, welches sich aus einer anderen Klasse heraus ändern soll.

Datei1:
namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        klasse2 abc = new klasse2();

        private void button1_Click(object sender, EventArgs e)
        {
            abc.doCradyStuff();
        }
    }
}
Datei 2:
namespace Test
{
    class klasse2
    {
        public void doCradyStuff()
        {
            label1.text = "Test"; //Das hier funktioniert nicht  
        }
    }
}

in der doCrazyStuff() soll das label1 geändert werden.

Ich bin leider noch ganz am Anfang in C# und komme nicht weiter.

Form1.label1.Text funktioniert auch nicht.
Ich habe auch versucht in der Klasse2 nochmal
Form1 cde = new Form();
zu machen, doch dann bekomme ich eine Meldung, dass das Programm zu lange selbst aufgerufen wird.

Habe ich ne Idee, wie ich das lösen kann.
Gruß
8digit

Content-ID: 244698

Url: https://administrator.de/forum/c-sharp-label-aus-anderer-klasse-heraus-aendern-244698.html

Ausgedruckt am: 24.12.2024 um 00:12 Uhr

emeriks
Lösung emeriks 25.07.2014 aktualisiert um 17:07:40 Uhr
Goto Top
Hi,
woher soll denn "klasse2" wissen, wer "label1" ist? Du musst da schon explitzit eine Referenz angeben.
ich kann jetzt kein C#, nur in VB.Net bewandert, aber das muss in etwa so aussehen: (ich hoffe, die syntax stimmt)

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        klasse2 abc = new klasse2(this);

        private void button1_Click(object sender, EventArgs e)
        {
            abc.doCradyStuff();
        }
    }
}

{
    class klasse2
    {
	private Form _Parent;
	public klasse2(Form Parent)
	{
           _Parent = Parent;
	}
        public void doCradyStuff()
        {
            _Parent.label1.text = "Test";  
        }
    }
}

Beim Erstellen der klasse2 übergibst Du das Fromular.

E.


Edit:
Oder So

amespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        klasse2 abc = new klasse2();

        private void button1_Click(object sender, EventArgs e)
        {
            abc.doCradyStuff(this);
        }
    }
}

{
    class klasse2
    {
        public void doCradyStuff(Form Parent)
        {
            Parent.label1.text = "Test";  
        }
    }
}
8digit
8digit 25.07.2014 um 17:07:27 Uhr
Goto Top
Vielen Dank,
das mit dem Form1 Parent funktioniert super.

Ich wusste zwar, dass ich da irgendwie übergeben muss, aber nicht genau wie ich das mache.

Gruß
8digit