c# Daten zwischen zwei Forms austauschen

Gast #5827927
1
       private void sub_aufruf_form2(int lvct) {
2
            int ct = LVx[lvct].SelectedIndices[0];
3
            Globals.global_text = LVx[lvct].Items[ct].SubItems[5].Text;
4
            Globals.global_konto = LVx[lvct].Items[ct].SubItems[1].Text;
5
            Globals.global_betrag = LVx[lvct].Items[ct].SubItems[3].Text;
6
            Globals.global_datum = LVx[lvct].Items[ct].SubItems[4].Text;
7
  
8
            Globals.global_f2_save = false;
9
             Globals.global_LV_Zeiger = lvct;
10

11
            Globals.lvi = LVx[lvct].Items[ct];
12
            //string abfr=Globals.lvi.SubItems[1].Text;
13

14

15
            
16
            
17
            
18

19
          Form2 dlg = new Form2();
20
             dlg.ShowDialog();
21
 
22
        }
hallo,

schreibe gerade ein Buchhaltungsprogramm. Problem: Es soll eine 
(Unter-)Form2 aufgerufen werden, die Listview-Daten in Form1 bearbeitet.
Es funktioniert mit Globals - finde ich aber sehr umständlich. Wie kann 
ich Daten von Form1 einfach in Form2 übernehmen?

danke
Hallo,

...indem Du eine Prozedur New(sometype subdata) definierst, die
dann die Daten übernimmt.

       private void sub_aufruf_form2(int lvct) {
            int ct = LVx[lvct].SelectedIndices[0];

           Form2 dlg = new Form2(LVx[lvct].Items[ct].SubItems);
             dlg.ShowDialog();

        }

public void Sub New(sometype subdata) {
     Text_feld.text = subdata[5].Text;
     Konto_feld.text = subdata[1].Text;
     Betrag_feld.text = subdata[3].Text;
     Datum_feld.text = subdata[4].Text;
}


Den genauen Typ somedata sagt Dir Dein Objektkatalog, irgendwas wie 
ListViewRow vermutlich oder Object(). C# ist nicht meine Sprache, lesen 
ist ok, denken eher nicht.

Gruß,
Michael
c.m. schrieb:
> Du packst deine Daten in eine eigene Klasse (am besten mit gettern und
> settern), und übergibst der zweiten Form eine Objektreferenz der
> Instanz.

Das lag mir auch erst im Hinterkopf, aber ich komme von vb.net, und da 
sind Setter und Getter extrem langatmig (Schreibaufwand). Ich sehe aber, 
dass C# hier deutlich optimiert ist :-)

Gruß,
Michael
Gast
danke für die Antworten. Hilft aber nicht wirklich weiter. Liegt aber 
vielleicht an meinen beschränkten c#-Kenntnissen. Ich will in form2 eine 
Referenz auf form1.listview1 um die Daten in  form1.listview1 direkt aus 
form2 heraus zu ändern. In vb geht das. Müsste in c# also auch gehen?
Du Übergibst das Object der Daten an den Dialog.

Form2 dlg = new Form2();

dlg.SetObject(LVx[lvct]);

dlg.ShowDialog();


Die ganzen Abfragen von LVx machst dann im Dialog.

void SetObject(object)
{
  int ct = object.SelectedIndices[0];


}
Gast
Ralf B. schrieb:
> Du Übergibst das Object der Daten an den Dialog.

Genau das wäre es, was ich erreichen möchte. bei


Form2 dlg = new Form2();
dlg.SetObject(LVx[lvct]);

kommt eine Fehlermeldung - ...keine Definition für SetObject

Dann kommt ein icon
"Optionen für das Generieren eines Methodenstubs"
anklicken und die Fehlermeldung ist weg...

(Von einem Methodenstubs habe ich noch nie etwas gehört. Woher soll man 
so was wissen?)

Jedenfalls wird in form2 generiert:
      internal void SetObject(ListView listView)
        {
            throw new NotImplementedException();
        }

Fehlermeldung:
Methode nicht implementiert...


Da schreibe ich jetzt

 int ct = object.SelectedIndices[0];

rein - warum?
geht leider auch nicht. bei object. kommt nur equals und referenceequals

hört sich schon mal gut an - wie mach ich die reference?
Gast
Ein eifaches Beispiel :

Ich habe eine Form2.
Darin: public string text2;

In Form1 z.B.
string text1 = "Beispiel";

Dann rufe ich aus Form1 Form2 auf :

        {
             Form2 form = new Form2();
             form.text2 = text1;
             form.ShowDialog();

        }

Damit wird der Stringinhalt nach Form2.text2 übertragen
Gast
grundschüler schrieb:
> walter schrieb:
>> Formxyz.Designer.cs
>
> Versuch mit textbox1:
>         public  System.Windows.Forms.TextBox textBox1;
>
> keine Fehlermeldung - nur wie greife ich jetzt auf tb zu?
> form1.textBox1... geht leider nicht.

Bei als static deklarierten Methoden ist bei der Entwurfszeit kein 
Zugriff möglich.
Die Voreinstellung ist static.
static entfernen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.