c# Daten zwischen zwei Forms austauschen

Gast #5827927
Lesenswert?

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
#5827940
Lesenswert?

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
#5827943
Lesenswert?

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 #5828892
Lesenswert?

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?
Gast #5828998
Lesenswert?

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 #5832593
Lesenswert?

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 #5836353
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren