Announcement

Collapse
No announcement yet.

(WPF) Datenaustausch zwischen zwei Fenstern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Hehe, Da es jetzt sowieso schon ne Lachnummer geworden ist, wollte ich es nochmal einwenig konkretisieren ... Denn Window2 soll erst mit einem Button Klick aus Form1 raus sichtbar werden was mit dem Code ja nicht klappt.

    MfG
    Promos

    Comment


    • #17
      Erkläre doch einfach mal genau was Du im Endeffekt haben möchtest. Sollen immer beide Forms sichtbar sein? Sind die modal? Was steht drin? Welcher Workflow soll erreicht werden? Ich denke wenn Du Dein Problem etwas mehr umschreibst. Immer von Window1 und Window2 zu reden finde ich ganz furchtbar, weil man ständig irgendwie immer alles durcheinander bringt.

      Comment


      • #18
        Hallo,

        ich misch mich mal wieder ein.

        fanderlf hat eben geschrieben dass es sehr verwirrend ist was du erreichen willst. Gib auch an ob du eine "Musterlösung" oder einen "Hack" verwenden willst.

        Letzteres ist zwar erstmals einfacher aber langfristig nicht zielführend.

        Weiters wurden eigentlich alle Aspekte bereits in diesem Thema erwähnt. Die Klasse mit welcher die Werte übergeben werden ist in jeder Lösung sinnvoll. Wie diese Klasse (genauer: die Instanz davon) zwischen den Fenstern übertragen wird bleibt somit noch zu klären.

        Die Hack-Lösung:
        Fenster 1 erstellt die Instanz und übergibt diese im Konstruktor an Fenster 2. Die Werte sind somit auch Fenster 1 bekannt da diese ja die Instanz erstellt hat.

        Die Muster-Lösung:
        fanderlf hat dies in einer der vorigen Antworten schon dargestellt.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #19
          Okay Also nochmal ganz von vorne dann sollte es komplett klar sein was erreich werden soll:

          Ich habe ein Fenster, welches immer Sichtbar sein soll, darin gibt es Labels und nen Button (vereinfacht, da der Rest irrelevant für das Vorhaben ist). Klickt der Benutzer nun auf diesen Button soll sich vorübergehend das zweite Fenster öffnen, indem der Benutzer die Möglichkeit hat Strings einzugeben. Diese vom Benutzer eingegebenen Strings sollen, nachdem er es mit einem Button Klick im Fenster bestätigt hat, in das Hauptfenster übertragen werden. Ebenfalls mit dem Klick soll sich das zweite Fenster wieder schließen. Die eingegebenen und übertragenen Strings sollen dann in den Labels im Hauptfenster angezeigt werden.

          Ich denke das beschreibt alles was passieren soll ziemlich genau und hoffe ich habe mich verständlich ausgedrückt .

          MfG
          Promos

          Comment


          • #20
            Hallo,

            hoffe ich habe mich verständlich ausgedrückt
            Ja ist klar was du willst.

            D.h. das 2. Fenster ist ein modaler Dialog. Die Datenübergabe hab ich meiner vorigen Antwort (auch nochmal) beschrieben.

            So in der Art schaut das dann aus:

            Datei Daten.cs
            [highlight=c#]
            namespace WindowsFormsApplication1
            {
            public class Daten
            {
            public string Name { get; set; }
            public string Vorname { get; set; }
            }
            }
            [/highlight]

            Datei Form1.cs
            [highlight=c#]
            using System;
            using System.Windows.Forms;

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

            private void button1_Click(object sender, EventArgs e)
            {
            Daten daten = new Daten();
            new Form2(daten).ShowDialog();
            nameLabel.Text = daten.Name;
            vornameLabel.Text = daten.Vorname;
            }
            }
            }
            [/highlight]

            Datei Form2.cs
            [highlight=c#]
            using System;
            using System.Windows.Forms;

            namespace WindowsFormsApplication1
            {
            public partial class Form2 : Form
            {
            private Daten _daten;

            public Form2()
            {
            InitializeComponent();
            }

            public Form2(Daten daten) : this()
            {
            _daten = daten;
            }

            private void button1_Click(object sender, EventArgs e)
            {
            _daten.Name = nameTextBox.Text;
            _daten.Vorname = vornameTextBox.Text;
            this.Close();
            }
            }
            }
            [/highlight]

            Hinweis: Datenbindung kann auch verwendet werden - falls dir das nichts sagt vergiss den Hinweis wieder

            Ist zwar WinForms ändert aber nichts am Prinzip.


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #21
              Wunderbar ich habe dir vielmals zu Danken. Und ich weiß das ich das sicherlich nie wieder gut machen kann ... Aber eins kann ich sicher sagen durch die relative Unsicherheit habe ich so einiges gelernt in diesem Thread.

              MfG
              Promos

              Comment


              • #22
                Hallo,

                Wunderbar ich habe dir vielmals zu Danken.
                Der Komplettheit halber auch fanderlf.

                habe ich so einiges gelernt in diesem Thread.
                Dann haben sich die 20 Beiträge ja gelohnt


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #23
                  Ist ja auch nicht so dass wirs nicht gern machen

                  Comment

                  Working...
                  X