Autor Beitrag
blumione
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Sa 03.01.09 14:05 
Hallo zusammen

Ich habe folgendes Problemm. Form1 ist bereits geöffnet. Aber darin öffne ich Form1. Daten von Form1 nach Form2 schicken funktioniert. Jetzt möchte ich es aber umgekehrt machen. Der Code gibt mir kein Exception.

Wenn ich Daten von Form1 nach Form2 senden möchte wird es über Form2 Load() ausgeführt.

Leider funktioniert das nicht umgekehrt. Da die Form1 bereits geöffnet ist und nicht auf das Form1 Load() Event reagiert. Ich habe es auch mit Enter() versucht. Aber es passiert nichts.

Wie heisst das Event?

Lg
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 03.01.09 14:12 
user profile iconblumione hat folgendes geschrieben Zum zitierten Posting springen:
Der Code gibt mir kein Exception.
Welcher? :nixweiss:

user profile iconblumione hat folgendes geschrieben Zum zitierten Posting springen:
Wie heisst das Event?
Event worauf? Dass das Formular den Eingabefokus erhält? Angezeigt wird?

Die Frage zu der Kommunikation zwischen zwei Formularen gab es immer wieder:
www.c-sharp-forum.de/viewtopic.php?t=88171
www.c-sharp-forum.de...ewtopic.php?p=536142
Eine Antwort gibt u.a. dieser FAQ-Eintrag:
www.mycsharp.de/wbb2...ead.php?threadid=488
blumione Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Sa 03.01.09 14:23 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconblumione hat folgendes geschrieben Zum zitierten Posting springen:
Der Code gibt mir kein Exception.
Welcher? :nixweiss:

user profile iconblumione hat folgendes geschrieben Zum zitierten Posting springen:
Wie heisst das Event?
Event worauf? Dass das Formular den Eingabefokus erhält? Angezeigt wird?

Die Frage zu der Kommunikation zwischen zwei Formularen gab es immer wieder:
www.c-sharp-forum.de/viewtopic.php?t=88171
www.c-sharp-forum.de...ewtopic.php?p=536142
Eine Antwort gibt u.a. dieser FAQ-Eintrag:
www.mycsharp.de/wbb2...ead.php?threadid=488


In Form2 steht:
ausblenden C#-Quelltext
1:
        public System.Windows.Forms.ListBox listBox1;					


ausblenden C#-Quelltext
1:
2:
3:
            Form1 frmeins = new Form1();
            frmeins.frmls = this;
            this.Close();




Und in Form1:

ausblenden C#-Quelltext
1:
        public Form2 frmzwei;					


Und auf dem Event, der eintritt wenn das Form2 geschlossen wurde und das Form1 nur noch da ist:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
            try
            {
                MessageBox.Show(frmzwei.listBox1.Items.Count.ToString());
                if (frmzwei.listBox1.Items.Count != 0)
                {
                    for (int i = 0; i <= frmzwei.listBox1.Items.Count - 1; i++)
                    {
                        this.listView1.Items.Add(frmzwei.listBox1.Items[i].ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


Lg Danke schonmals.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 03.01.09 14:23 
Hallo,

wenn Du uns nicht verrätst, wie Du es versucht hast, können wir natürlich nicht konkret antworten, sondern nur allgemein:

Variante 1 mit ShowDialog-Methode
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
using(Form2 form = new Forms()) {
   //  zuerst Daten übergeben, dann öffnen
   if (form.ShowDialog() == DialogResult.OK) {
      // jetzt Daten abholen, und zwar als Eigenschaften von Form2
   }
}


Variante 2 mit Show-Methode und FormClosing-Ereignis
Zuerst muss außerhalb der Klassen ein eigener Delegate mit bestimmten Argumenten definiert werden.

Dann muss in Form1 (!) eine Methode entsprechend diesem Delegate erstellt werden. Die macht irgendetwas innerhalb von Form1 und benutzt dazu die festgelegten Argumente.

In Form2 wird eine Variable gemäß dem Delegate deklariert. Über einen speziellen Konstruktor oder eine Init-Methode erhält diese Variable den Wert der Methode von Form1:
in Form1:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
internal void DelegateInstance(params values) { ... }
using(Form2 form = new Forms()) {
   //  zuerst Daten übergeben, dann öffnen
   form.Init(DelegateInstance);
   form.Show();
}

in Form2:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
private MyDelegate setParameter;
public void Init(MyDelegate instance) {
   setParameter = instance;  
   // ich weiß gerade nicht, ob hier wie bei Events mit += gearbeitet werden sollte
}

Im FormClosing-Ereignis von Form2 wird diese Methode aufgerufen:
ausblenden C#-Quelltext
1:
   setParameter(values);					

"values" habe ich nur als Kurzschreibweise für die Argumente benutzt, die Du konkret haben willst.

Ich hoffe, diese Informationen bringen Dich weiter. Beide Verfahren werden in den von Sebastian genannten Links genauer erläutert.

Gruß und Frohes Neues Jahr! Jürgen

Nachtrag, nachdem mittlerweile Deine Ergänzung gekommen ist:
Bei diesem Code in Form2 wird mir immer schlecht (das kann ich auch bei Anfängern nicht verstehen):
Zitat:
ausblenden C#-Quelltext
1:
2:
3:
           Form1 frmeins = new Form1();
            frmeins.frmls = this;
            this.Close();

In Form2 erzeugst Du innerhalb einer Methode ein neues Form1, machst irgendetwas damit, am Ende wird Form2 geschlossen, und damit ist alles, was innerhalb dieser Methode deklariert wurde, wieder futsch. Bitte mitdenken!
blumione Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 05.01.09 20:26 
Ich komme noch nicht weiter.

Wie bekomme ich jetzt die Daten von Form2 in die Form1?

Folgende Situation:

Beide Forms (Form1 und Form2) sind geöffnet.
In der Form2 ist eine ListBox in der Form1 eine ListView. Ich möchte jetzt die Werte der ListBox in die ListView eintragen.

Lg und Danke schonmals.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 05.01.09 20:34 
user profile iconblumione hat folgendes geschrieben Zum zitierten Posting springen:
Wie bekomme ich jetzt die Daten von Form2 in die Form1?

So, wie ich es in meinem vorigen Beitrag als Variante 2 beschrieben habe. Du packst es eben nicht in FormClosing, sondern rufst die Methode setParameter dort auf, wo Du es für sinnvoll hältst.

Gruß Jürgen