Laden...

Form2 auf Form1 ohne Ergebnis

Erstellt von romu2000 vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.872 Views
R
romu2000 Themenstarter:in
291 Beiträge seit 2006
vor 15 Jahren
Form2 auf Form1 ohne Ergebnis

Hallo zusammen,

habe folgendes Problem:

Form1 ist mein Hauptformular.
Form2 wird geöffnet und ein Datagrid angezeigt.
Beim doppelklick auf Datagrid in Form2 soll auf Form1 der Tableadapter gefüllt werden.

Habe jetzt folgenden Code:

Form1:


        public void WVListeClick(int WVClickkdnr)
        {
            this.adressen21TableAdapter.Fill(this.fDTELDBSQLDataSet.Adressen21, WVClickkdnr);
            label8.Text = Convert.ToString(WVClickkdnr);
        }

Form2:


public string WVListekdnrübergabe;

        private void wiedervorlagenlisteDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            Form1 WVListeKlick = new Form1();
            WVListekdnrübergabe = wiedervorlagenlisteDataGridView.CurrentRow.Cells[1].Value.ToString();
            WVListeKlick.WVListeClick(Convert.ToInt32(WVListekdnrübergabe));
            label2.Text = WVListekdnrübergabe;
        }

Habe mir auf Form1 die MEthode WVListeClick erstellt und feure diese von Form2 an.
Doch ich erhalte kein Ergebnis.

Es kommt aber auch keine Fehlermeldung.

Kann mir vlt. jemand helfen ?

Viele Grüße

Ronny

738 Beiträge seit 2007
vor 15 Jahren
R
romu2000 Themenstarter:in
291 Beiträge seit 2006
vor 15 Jahren

hallo,

ich übergebe doch hiermit die variable:


WVListeKlick.WVListeClick(Convert.ToInt32(WVListekdnrübergabe));

Gelöschter Account
vor 15 Jahren
Form1 WVListeKlick = new Form1();
            WVListekdnrübergabe = wiedervorlagenlisteDataGridView.CurrentRow.Cells[1].Value.ToString();
            WVListeKlick.WVListeClick(Convert.ToInt32(WVListekdnrübergabe));
            label2.Text = WVListekdnrübergabe;

und du denkst wirklich das du mit deisem code auf deinem ursprünglichen form1 bist?

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo romu2000

wie schon in Form1 auf Form2 Login gesagt sollte Form2 Form1 nicht kennen. Wieso fragst du uns, wenn du dann unsere Ratschläge doch nicht beachtest?

Bessere Ansätze stehen in [FAQ] Kommunikation von 2 Forms

herbivore

R
romu2000 Themenstarter:in
291 Beiträge seit 2006
vor 15 Jahren

weil ich leider nicht weiss wie ich sonst einen event aauf from1 nach doppelklick auf form2 starten kann.

Viele Grüße

Ronny

Gelöschter Account
vor 15 Jahren

anders rum.

du sollst auf form 2 ein event starten, das eine methode auf form 1 aufruft.

siehe:
[FAQ] Kommunikation von 2 Forms
[FAQ] Eigenen Event definieren / Information zu Events

R
romu2000 Themenstarter:in
291 Beiträge seit 2006
vor 15 Jahren

was anderes mache ich doch in meinem Code nicht, oder?

Event form2 : Doppelklick auf Datagrid
Methode auf Form1: WVKlick

Und mit get und set kann ich ja keine MEthode aufrufen bzw. einen event auslösen.
Zu Eurer Form1 auf Form2 Login FAQ:

Welches Beispiel ist denn dort für mich generell relevant? Ich finde die FAQ ziemlich verwirrend.

Gibt es denn rigendwo ein veranschaulichendes Beispiel in dem man anhand von Codesnippets nachvollziehen kann was passiert wenn ein Button auf Form2 gedrückt wird und etwas auf Form1 ausgeführt wird. In diesem Falle müssen sich die beiden Forms doch kennen ?, Oder?

Viele Grüße

Ronny

Gelöschter Account
vor 15 Jahren

was anderes mache ich doch in meinem Code nicht, oder?

wenn dem so wäre dann würde ich schreiben das du alles richtig machst.

du erstellst im form 2 eine neue instanz von form1 und verpasst ihm einen wert und wunderst dich das die aufrufende form1 nichts davon mitbekommt

form1 -ruft auf-> form2 -erstellt neue-> form1

Welches Beispiel ist denn dort für mich generell relevant? Ich finde die FAQ ziemlich verwirrend.

so wie ich das sehe, solltest du versuchen alle genannten beispiele zu verstehen, dann wird sich diese problem in luft auflösen. dir fehlen in dieser hinsicht einige grundlagen.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo romu2000,

was anderes mache ich doch in meinem Code nicht, oder?

solange du von Form2 auf Form1 zugreifen musst, machst du was signifikant anderes.

Welches Beispiel ist denn dort für mich generell relevant? Ich finde die FAQ ziemlich verwirrend.

Für die Kommunikation von zwei Forms gibt es erstmal sehr unterschiedliche Fälle: Eine Information soll von Form1 an Form2 übermittelt werden, eine Information soll von Form2 an Form1 übermittelt werden oder eine Information soll von beiden Forms gemeinsam genutzt werden. Manchmal geht es auch nur um die Kontrolle, die übergeben werden soll und nicht um eine Information. Außerdem gibt es Differenzierungen je nach dem Zeitpunkt zu dem die Informationsübertragung erfolgen soll, z.B. nach dem Form2 geschlossen wurde oder eben während Form2 noch läuft. Zudem gibt es für jeden Fall mehrere Lösungsmöglichkeiten. Daher ist eher das Thema selbst unübersichtlich bzw. komplex. Du kannst einfach nicht erwarten, dass du die FAQ aufmachst und da als erstes genau die passendste Lösung für genau deinen Anwendungsfall steht. Trotzdem erreichst du über die FAQ komplette Beispiele mit guten Lösungen. Du musst dich eben nur darauf einlassen, deinen bisherigen Ansatz aufzugeben und stattdessen einen der Ansätze aus der FAQ zu verwenden.

Gibt es denn rigendwo ein veranschaulichendes Beispiel in dem man anhand von Codesnippets nachvollziehen kann was passiert wenn ein Button auf Form2 gedrückt wird und etwas auf Form1 ausgeführt wird.

Klar, ist auch direkt aus der FAQ verlinkt: Zugriff auf Steuerelement aus Klasse

In diesem Falle müssen sich die beiden Forms doch kennen ?, Oder?

Nein! Wie ich schon geschrieben habe, sollte Form2 Form1 nicht kennen und das ist auch nie nötig.

herbivore

R
romu2000 Themenstarter:in
291 Beiträge seit 2006
vor 15 Jahren
Habs geschafft

Hallo zusammen,

ich habe es jetzt endlich geschafft.

Hier eine kurze Beschreibung für den Austausch von Daten von Form2 auf Form1:

Form1:


private Wiedervorlagenliste WVListe = new Wiedervorlagenliste();

private void WVListeuebergabe_doubleclicked(object sender, WVListeUebergabeEventArgs e)
        {
                   label10.Text = e.uebergabe;


        }


        private void btnWiedervorlagen_Click(object sender, EventArgs e)
        {

            WVListe = new Wiedervorlagenliste();         
            WVListe.WVListeUebergabe += new Wiedervorlagenliste.WVListeUebergabeHandler(WVListeuebergabe_doubleclicked);
            WVListe.Show();
          

           }

und Hier für Form2 :



public delegate void WVListeUebergabeHandler(object sender, WVListeUebergabeEventArgs e);

public event WVListeUebergabeHandler WVListeUebergabe;

private void wiedervorlagenlisteDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            string suebergabe = this.wiedervorlagenlisteDataGridView.CurrentRow.Cells[1].Value.ToString();

            WVListeUebergabeEventArgs args = new WVListeUebergabeEventArgs(suebergabe);
            WVListeUebergabe(this, args);
           

        }

public class WVListeUebergabeEventArgs : System.EventArgs
    {
        private string muebergabe;

        public WVListeUebergabeEventArgs(string suebergabe)
        {
            this.muebergabe = suebergabe;
        }
        public string uebergabe
        {
            get
            { return muebergabe; }
        }
    }


Das ganze hat mich jetzt 2 Tage gekostet, aber ich denke ich habe dadurch viel gelernt.

So müsste es doch nun richtig sein, oder? Form2 kennt Form1 nicht. Oder sehe ich hier etwas falsch.

Es werden lediglich über die delegates die Methoden angestossen, oder ?

Vielen Dank für Eure Hilfe herbivore und Jack.

Viele Grüße

Ronny

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo romu2000,

So müsste es doch nun richtig sein, oder? Form2 kennt Form1 nicht.

ja, richtig!

BTW: Den EventHandler WVListeUebergabeHandler kannst du dir sparen, wenn du wie in [Lösung] Problem mit EventHandler gezeigt EventHander<WVListeUebergabeEventArgs> verwendest.

herbivore

Gelöschter Account
vor 15 Jahren

gut gemacht romu2000.