[C#] Form2 verwendet Variable von Form1

Tigermoon

Grünschnabel
Hallo Leute,

also ich stehe voll aufm Schlauch,
ist bestimmt ganz einfach.

Form1 ruft Form2 auf
Form2 benötigt in seiner Load eine Variable von Form1 - die auch definitiv in Form1 gesetzt ist
Form2 meint aber leider das ich die NullReferenceException nicht abgefragt hätte weil die variable NULL wäre? Ich raffe das ned...:confused:

der Fehler ist bei int dl = f1.durchlaeufe;

Schonmal danke für die Antwort

Code:
        private void Ergebnisse_Load(object sender, EventArgs e)
        {
            Form1 f1 = (Form1)Parent;
            int dl = f1.durchlaeufe;

            string[] alle = new string[1];

            for (int x = 0; x < 1; x++)
            {
                string eintrag = f1.eintraege[x,0]+"-"+f1.eintraege[x,1]+": normal "+f1.eintraege[x,2]+" tune "+f1.eintraege[x,3]+" visual "+f1.eintraege[x,4];

                alle[x] = eintrag;
            }

            listBox1.DataSource = alle;              
        }
die 1 in der for-schleife ist nur zum Test das wird nachder dl sein
 
f1 ist denke mal null,
sicher das
PHP:
Form1 f1 = (Form1)Parent;
Form1 hält?

Wie rufst du Form2 auf?

Entweder du übergibst beim ShowDialog den Owner (Form1) oder du erweiterst den Konstruktor deiner Form2 wo du als Parameter Form1 erwartest.
Dieses Form1 speicherst du dann in einem privaten Feld ab und kannst das dann immer abfragen.

Edit: Könnte es auch sein das Form1 zwischenzeitlich disposed wurde?

Spyke (www.iv-interactive.de)
 
Aufruf und initialiseireung von Form2 in Form1

Code:
//ini
        Ergebnisse Eform = new Ergebnisse();
//aufruf
            Eform.ShowDialog();

Variable in Form1

Code:
        // array
        public int durchlaeufe;
        public string[,] eintraege;
 
Zuletzt bearbeitet:
Hallo,

ich würde das so machen:

Code:
//ini
Ergebnisse Eform = new Ergebnisse(this);
//aufruf
Eform.ShowDialog();
(der Owner wird ja im Konstruktor benötigt, deswegen nicht beim ShowDialog erst übergeben)

Und dann in Form2 (der Konstruktor, da hätte ich auch den Code von dem Load reingetan):
Code:
public Form2(Form form_owner)
{
      InitializeComponent();
      //Owner setzen
      this.Owner = form_owner;

      Form1 f1 = ((Form1)this.Owner);
      int dl = f1.durchlaeufe;

      string[] alle = new string[1];

      for (int x = 0; x < 1; x++)
      {
            string eintrag = f1.eintraege[x,0]+"-"+f1.eintraege[x,1]+": normal "+f1.eintraege[x,2]+" tune "+f1.eintraege[x,3]+" visual "+f1.eintraege[x,4];

            alle[x] = eintrag;
      }

      listBox1.DataSource = alle;

MfG
Fabsch
 
(der Owner wird ja im Konstruktor benötigt, deswegen nicht beim ShowDialog erst übergeben)

Optimaler wäre im ShowDialog, ansonsten hängt das Fenster zu sehr in der Luft, könnte bei einige Anwendungen zu problemem führen.
Und den ganzen kram ausm Konstruktor (außer InitializeComponent() :D) ins Show Ereignis.

Mir ist auch so als wenn Datenbindung nicht ganz funktioniert wenns im Konstruktor gesetzt wird.

hä?

sorry das hab ich jetzt nicht verstanden
Was?

Spyke (www.iv-interactive.de)
 
Zuletzt bearbeitet:
Zurück