Laden...

Dialog-Fenster soll erst schliessen, wenn Eingabewerte OK sind

Erstellt von CrocodileDundee vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.051 Views
C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 5 Jahren
Dialog-Fenster soll erst schliessen, wenn Eingabewerte OK sind

Hallo zusammen,
habe ein Problem mit einem Dialog-Fenster:

In diesem habe ich

  • OK Button (DialogResult = OK)
  • Cancel-Buttton (DialogResult = Cancel)
  • ein DataGridView, in das der User Intergers eingeben soll, dabei sollen die Werte in Spalte 1 größer sein als die in Spalte 2.

Die Eingabe von Buchstaben fange ich mit einer CellValidation ab, die direkt bei der Eingabe "zuschlägt", was auch alles funktioniert.

Die Prüfung der Zahl möchte ich erst auslösen, wenn der User den OK-Button anklickt. Das Fenster soll erst schliessen, wenn die o.g. Bedingung erfüllt ist.
Leider habe ich für dieses Problem noch keine saubere Lösung gefunden.

Zum Beispiel wollte ich den DialogResult des OK-Buttons erst auf "OK" ändern, wenn die Bedingung erfüllt ist, dies bewirkt aber, daß ich den Button 2x anklicken muß, um das Fenster zu schließen.

Hat jemand eine Tipp für mich?

Vielen Dank und viele Grüße
Frank

4.939 Beiträge seit 2008
vor 5 Jahren

Das Setzen von DialogResult = DialogResult.OK sollte den Dialog dann (eigentlich) schließen.
Oder wie sieht deine Button-OK-Methode aus?

D
94 Beiträge seit 2008
vor 5 Jahren

Hallo zusammen,
Zum Beispiel wollte ich den DialogResult des OK-Buttons erst auf "OK" ändern, wenn die Bedingung erfüllt ist, dies bewirkt aber, daß ich den Button 2x anklicken muß, um das Fenster zu schließen.


void ButtonOK_Click(...)
{
   if (IsInputOK())
   {
      DialogResult = OK
   }
   else
   {
        //Zeige Fehler irgendwie an
   }
}

?

C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 5 Jahren

Gelöst!
Allerdings: Das ganze Problem war, daß ich die ganze Zeit anstatt

DialogResult = DialogResult.OK
(was ja dann eigentlich this.DialogResult = DialogResult.OK entspricht)

die Zeile

   btn_OK.DialogResult = DialogResult.OK

programmiert hatte.
Hab immer gedacht, der Button gibt den "OK" zurück.
Anscheindend muß aber die Form "OK" zurückgeben.

Hinweis von Abt vor 5 Jahren

Bitte keine Full Quotes [Hinweis] Wie poste ich richtig?