Announcement

Collapse
No announcement yet.

Austausch zwischen 2 Formen

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

  • Austausch zwischen 2 Formen

    Hi,

    ich würde gerne in Form2 den "Index" der Listbox, also die aktuelle Auswahl auslesen. Aber leider klappt dies nicht.(Listbox ist in Form 1)
    Ich habe dazu einmal eine globale Variable gemacht in Form 1 gemacht:
    public int aktuell;
    Nach dem drück auf einen Button wird in diese die Position geschrieben, danach zur Prüfung ausgegeben, was auch klappt.
    Beim öffnen von Form2 wird dann aber nicht der gewünschte Wert, sondern 0 ausgegeben.
    Das steht in Form 2:
    Form1 fet = new Form1();

    int akt = fet.aktuell;
    MessageBox.Show(akt.ToString());

  • #2
    du sollst keine neue Form1 anlegen. Du musst dir eine Referenz auf Form1 verschaffen und diese dann benutzen um die Position abzufragen.

    Comment


    • #3
      ah ok sowas ähnliches hatte ich mir gedacht, werde mal nach den Schlüsselwörtern googlen, wäre aber trozdem nett wenn du mir schreiben könntest wie das geht

      Comment


      • #4
        Originally posted by fanderlf View Post
        du sollst keine neue Form1 anlegen. Du musst dir eine Referenz auf Form1 verschaffen und diese dann benutzen um die Position abzufragen.
        Bloß keine Referenz! Wenn Form2 von Form1 erzeugt wird, darf Form1 public-Informationen von Form2 wissen und ggf. beeinflussen; aber Form2 darf nichts von Form1 wissen. (Ein neues Form1 von Form2 aus zu erzeugen, ist natürlich abwegig.)

        Du musst deshalb genau überlegen, was in welcher Reihenfolge bearbeitet werden soll. Wenn die ListBox in Form1 steht und Form2 von Form1 erzeugt wird, darf Form2 zwar etwas über eine Zahl currentValue erfahren, aber nicht, wozu diese Zahl dient. Bevor ich dazu Code schreibe, wäre es sinnvoll, wenn du noch schreiben würdest, wozu du diese Informationen austauschen möchtest.

        Vorab schon einmal der Hinweis auf [FAQ] Kommunikation von 2 Forms und die dort stehenden Verweise. Kurz gesagt: Form1 kann public-Member setzen und abfragen. Wenn es um automatische Datenübergabe geht, ist ein Delegate von Form1 an Form2 zu übergeben, der Werte benutzen kann.

        Jürgen

        Comment


        • #5
          das ist alles eine Frage des Geschmacks Generell sollten Forms eigentlich gar nichts voneinander Wissen, sondern über Domain Objekte bzw. Application Controller miteinandern kommunizieren, aber wenn ich damit anfange dann bekommt der Threadautor nen Koller

          Comment


          • #6
            So danke schon mal hab das ganze eben probiert...
            Aber irgendwie will das net in meinem Schädel rein.
            Ich will von Form2 nur auf eine Variable(int) von Form1 zugreifen.

            Code:
             public int aktuell;
            
                    public void setaktuell(int para)
                    {
                        aktuell = para;
                    }
                    public int getaktuell()
                    {
                        return aktuell;
                    }
            Der obrige Code steht in Form1.
            Dann beim klick auf einen Button in Form 1 tue ich folgendes:
            Code:
             position = listBox.SelectedIndex;
                        int s = position + 1;
                        this.setaktuell(s);
                        MessageBox.Show(this.getaktuell().ToString());

            In Form 2 steht folgendes:
            Code:
             Form1 fet = new Form1();
                       int akt = fet.getaktuell();
                        MessageBox.Show(akt.ToString());
            Am Ende bekomme ich immer das in den Messageboxen:
            1
            0
            (Wenn ich den Ersten Eintrag wähle.)

            Comment


            • #7
              du legst schon wieder Form1 neu an in Form2. Ich denke nicht dass das so sein soll.

              Diese Zeile darf da so nicht stehen:

              [highlight=c#]
              Form1 fet = new Form1();
              [/highlight]

              Du musst Dir irgendwo anders her eine Referenz auf Form1 holen, wenn Du das so direkt machen willst.

              Comment


              • #8
                Die Seite und die Beispiele dich ich alle mir angeschaut habe verkomplizieren die Angelegenheit nur... da blicke ich leider nicht durch.

                Comment

                Working...
                X