none
Daten über verschiedene Forms austauschen... RRS feed

  • Frage

  • Guten Tag,

    Grundsätzliche Frage: ist es möglich, Daten über verschiedene Forms auszutauschen?

    Es geht nicht um das MDI. 

    Ich habe eine Form1 mit einem Datagridview. Da sind dann einige Buttons drin über die eine neue
    Form mit einem Chartmodul geöffnet wird. Dieses Chartmodul möchte ich solang es geöffnet ist,
    mit aktuellen Daten versorgen. 

    Ist so etwas Möglich und wenn ja, wie oder wo könnte ich mich da einlesen.

    Gruß Olaf

    Mittwoch, 6. August 2014 15:00

Antworten

  • Hallo,
    deine Form1 kennt die Instanz der 2. Form. Somit kannst du einfach Methoden der 2. Form aufrufen:

    Dim frm as Form2
    sub OpenSecondForm()
      frm = new form2()
      frm.Show()
    end sub
    
    sub SendData()
      frm.SetNewData("Neue Daten")
    end sub

    In deiner Form2 brauchst du nur eine öffentliche (public) Methode zu implementieren, die deine neuen Daten entgegen nimmt.

    Für den Umgekehrten Weg solltest du Events verwenden. Dieses wird in Form2 implementiert und von Form1 abonniert. Wenn nun Form2 neue Daten an Form1 senden will, löst es einfach das Event aus. Siehe auch Add Custom Event to a Class in VB.NET


    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

    • Als Antwort markiert Olafx Mittwoch, 6. August 2014 17:22
    Mittwoch, 6. August 2014 15:15
    Moderator
  • Du musst zumindest an die Instanz des anderen Fensters gelangen. Also entweder jedes Fenster bekommt eine eigene Variable oder aber du speicherst alle Fenster in einer List(Of T) o.ä.

    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

    • Als Antwort markiert Olafx Mittwoch, 6. August 2014 17:21
    Mittwoch, 6. August 2014 17:16
    Moderator

Alle Antworten

  • Hallo,
    deine Form1 kennt die Instanz der 2. Form. Somit kannst du einfach Methoden der 2. Form aufrufen:

    Dim frm as Form2
    sub OpenSecondForm()
      frm = new form2()
      frm.Show()
    end sub
    
    sub SendData()
      frm.SetNewData("Neue Daten")
    end sub

    In deiner Form2 brauchst du nur eine öffentliche (public) Methode zu implementieren, die deine neuen Daten entgegen nimmt.

    Für den Umgekehrten Weg solltest du Events verwenden. Dieses wird in Form2 implementiert und von Form1 abonniert. Wenn nun Form2 neue Daten an Form1 senden will, löst es einfach das Event aus. Siehe auch Add Custom Event to a Class in VB.NET


    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

    • Als Antwort markiert Olafx Mittwoch, 6. August 2014 17:22
    Mittwoch, 6. August 2014 15:15
    Moderator
  • Hallo Tom,

    werde ich dann mal Testen. Vielen Dank für die Antwort.

    Gruß Olaf


    Olafx

    Mittwoch, 6. August 2014 16:03
  • Hallo Tom,

    habe das mal getestet. Es geht soweit wunderbar.
    Wenn ich mehrere neue Fenster öffne, müssen diese dann über
    einen Eindeutigen Namen erkennbar sein. So sehe ich es jetzt jedenfalls.

    Liege ich doch Richtig? Oder?

    Gruß Olaf


    Olafx

    Mittwoch, 6. August 2014 16:52
  • Du musst zumindest an die Instanz des anderen Fensters gelangen. Also entweder jedes Fenster bekommt eine eigene Variable oder aber du speicherst alle Fenster in einer List(Of T) o.ä.

    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

    • Als Antwort markiert Olafx Mittwoch, 6. August 2014 17:21
    Mittwoch, 6. August 2014 17:16
    Moderator
  • Dachte ich mir. 

    Danke


    Olafx

    Mittwoch, 6. August 2014 17:21