none
Aus einer Klasse, Daten an die Form übergeben (C#) RRS feed

  • Frage

  • Hallo,

    was wäre der einfachste Weg, Daten aus einer Klasse an die Form zu übergeben?

    (C#)

    Danke für die Info.


    Dienstag, 15. Juli 2014 07:53

Antworten

  • Hallo,
    verwendet bitte keine statischen Felder etc. für Dinge die mehrfach vorkommen können. Sinn macht es bei dingen wie der Environment-Klasse, schließlich gibt es nur eine Betriebssystemversion etc.

    Um Informationen jeder Zeit von Klasse zu Klasse reichen zu können, solltest du ein Event implementieren. Hier ein Beispiel dazu:

    class Test{
      public EventHandle<MyEventArgs> MyEvent;
    
      public void ChangeData(string data){
        this.Data=data;//Neuen Wert zuweisen
    var evt = this.MyEvent; if(evt!=null)//Ist das Event abonniert? evt(this, new MyEventArgs(){Data=data});//Event auslösen und eine neue Instanz von MyEventArgs mit den geänderten Daten mitgeben } public string Data{get;set;} } //Dient dem transport von Daten im Ereignis class MyEventArgs:EventArgs{ public string Data{get;set;} } //Deine Form, die Test verwendet class Form1:Form{ Test test; public Form1(){ this.test=new Test();//Neue instanz von Test erstellen this.test.MyEvent += test_MyEvent;//Event abonnieren InitialisizeComponent(); } void vutton1_Click(object sender, EventArgs e) { test.ChangeData("Neue Daten");//Testweise die Daten ändern } void test_MyEvent(object sender, MyEventArgs e) { MessageBox.Show("Die Daten wurden geändert:\n" + e.Data); } }

    Siehe auch: Events Tutorial (Englisch) und Ereignisse (C#-Programmierhandbuch)



    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Dienstag, 15. Juli 2014 14:57
    Moderator

Alle Antworten

  • Hi Danijel,

    'n bisschen dünn die Info...

    Der einfachste Weg wäre wohl eine statische Variable...

    Gruß Ralf

    Dienstag, 15. Juli 2014 10:11
  • Hy,

    hmm dann soo, wie kann ich aus einer Klasse z.B.: in ein Label von der Form schreiben "Hallo"

    MfG

    Dienstag, 15. Juli 2014 12:16
  • Form.SetLabel(Klasse.LabelWert);.....

    SetLabel(string value)

    {

    label.Text = value;

    }

    ....

    Dienstag, 15. Juli 2014 12:21
  • Hallo,
    verwendet bitte keine statischen Felder etc. für Dinge die mehrfach vorkommen können. Sinn macht es bei dingen wie der Environment-Klasse, schließlich gibt es nur eine Betriebssystemversion etc.

    Um Informationen jeder Zeit von Klasse zu Klasse reichen zu können, solltest du ein Event implementieren. Hier ein Beispiel dazu:

    class Test{
      public EventHandle<MyEventArgs> MyEvent;
    
      public void ChangeData(string data){
        this.Data=data;//Neuen Wert zuweisen
    var evt = this.MyEvent; if(evt!=null)//Ist das Event abonniert? evt(this, new MyEventArgs(){Data=data});//Event auslösen und eine neue Instanz von MyEventArgs mit den geänderten Daten mitgeben } public string Data{get;set;} } //Dient dem transport von Daten im Ereignis class MyEventArgs:EventArgs{ public string Data{get;set;} } //Deine Form, die Test verwendet class Form1:Form{ Test test; public Form1(){ this.test=new Test();//Neue instanz von Test erstellen this.test.MyEvent += test_MyEvent;//Event abonnieren InitialisizeComponent(); } void vutton1_Click(object sender, EventArgs e) { test.ChangeData("Neue Daten");//Testweise die Daten ändern } void test_MyEvent(object sender, MyEventArgs e) { MessageBox.Show("Die Daten wurden geändert:\n" + e.Data); } }

    Siehe auch: Events Tutorial (Englisch) und Ereignisse (C#-Programmierhandbuch)



    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Dienstag, 15. Juli 2014 14:57
    Moderator
  • Hallo,

    Perfekt Danke!!!

    MfG

    Donnerstag, 24. Juli 2014 14:32