2016-11-10 3 views
1

Hallo Ich habe ein Formular, und ich möchte ein anderes Formular öffnen, wenn Benutzer das aktuelle Formular schließen, wie Sie hier sehen können:Formular schließen Eine nicht behandelte Ausnahme vom Typ 'System.ComponentModel.Win32Exception' in System.Windows.Forms.dll aufgetreten

private void frmDashboard_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      this.Close(); 
      frmConcerns a = new frmConcerns(); 
      a.ShowDialog(); 
     } 

Aber wenn ich auf die schließen-Schaltfläche klicken i erhalten diese Fehlermeldung:

An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in System.Windows.Forms.dll 

Additional information: Error creating window handle. 
+0

Dies stürzt normalerweise mit einer StackOverflowException ab. Der Aufruf von Close() bewirkt, dass das FormClosing-Ereignis erneut ausgelöst wird. Ich vermute, dass dein echter Code etwas anders ist und du es tatsächlich geschafft hast, zehntausend Dialoge zu erstellen. Danach zieht das Betriebssystem den Stecker und lässt Sie keine weiteren Fenster erstellen. Rufen Sie Close() nicht auf, das war schon erledigt. –

Antwort

1

this.Close() die aktuelle Form schließt - das ist eigentlich jetzt schon getan wird, weil sonst die FormClosing Veranstaltung nicht hätte wurde aufgerufen. Entfernen Sie diese Zeile.

Auch wenn Sie einen Dialog als modales Fenster anzeigen möchten, sollten Sie das übergeordnete Formular angeben, statt a.ShowDialog(); rufen Sie lieber a.ShowDialog(this);.

Wenn der Fehler immer noch da ist, kann ich Ihnen versichern, dass der Code, den Sie angezeigt haben, nach den von mir vorgeschlagenen Änderungen korrekt ist - ich habe ähnliche Dinge schon einmal gemacht. In diesem Fall muss der Fehler in anderen Teilen Ihres Codes auftreten, die Sie uns nicht gezeigt haben.

+0

Es funktioniert nicht. Es wird der gleiche Fehler zurückgegeben –

Verwandte Themen