Problem mit einer zweiten Form



  • Hallo,

    ich kämpfe gerade mit zwei Problemen bei meinen Froms.

    1.)
    Zum Anzeigen meiner Hauptdaten wird dataGridView1 auf Form1 verwendet. Für einen Wert zum Erfassen der Daten öffne ich beim Klick auf eine besteimmte Zelle eine weitere Form (Form2), in diese werden die Daten eingetragen und beim Schließen werden die Daten in die entsprechende Zelle in dataGridView1 geschrieben.

    Wenn ich keine Werte in Form2 schreibe und schließe, dann dann ich die Form2 auch immer wieder aufrufen und öffen. Sobald aber Werte eingetragen werden, kann ich anschließend die Form2 nicht mehr öffnen.

    Hier mal der Code, wie Form2 geöffnet wird:

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex == dataGridView1.NewRowIndex || e.RowIndex < 0) return;
    
                if (e.ColumnIndex == dataGridView1.Columns["Seriennummer"].Index)
                {
                    if (dataGridView1.CurrentCell.Value == null ||
                        dataGridView1.CurrentCell.Value.ToString() == "")
                    {
                        Form2 form2 = new Form2(null, true);
                        form2.SeriennummerCallback = new Form2.DelegateSeriennummer(this.SeriennummerInGridAnzeigen);
                        form2.ShowDialog();
                    }
                }
            }
    

    Falls zu einem späteren Zeitpunkt die Daten nochmals geändert werden möchten, rufe ich an anderer Stelle ebenfalls über eine DataGridView die Form2 auf und dort kann ich sie immer wieder öffnen und schließen, egal ob Werte eingetragen wurden oder nicht.

    2.)
    Und wie kann ich verhindern, dass die Form2 zweimal (oder noch öfters) geöffnet wird? Bzw. was muss ich prüfen.

    Danke schon mal im Voraus!



  • Ich konnte meine Probleme selbst lösen 🙂

    Zu 1)
    Den Debugger haette ich wohl schon frueher verwenden sollen, denn sobald die Zelle Text enthaelt konnte die Form2 gar nicht mehr geoffnet werden. => musste also mein if-Statement entsprechend abaendern

    Zu 2)
    Funktioniert so prima

    // Prüfen ob bereits eine Form geöffnet ist.
                        Form fc = Application.OpenForms["Formname"];
                        if (fc != null)
                            fc.Close();
    

Log in to reply