Announcement

Collapse
No announcement yet.

Closing und CanClose: Eingabeprüfung einfach verbinden?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Closing und CanClose: Eingabeprüfung einfach verbinden?

    Hallo,

    ich möchte, dass ein Formular nur bei fehlerfreier Eingabe oder bei Abbruch verlassen werden kann. <u>Wie geht dies am einfachsten</u> (d.h. mit Code an möglichst wenigen Stellen)? Zurzeit regele ich dies so:

    <b>ButtonOK_Click()</b> prüft die Eingaben und setzt den private-bool-Parameter CanClose auf true oder false.
    <b>ButtonExit_Click()</b> setzt CanClose = true.
    <b>Form1_KeyUp()</b> prüft, ob <b>Alt-F4</b> gedrückt wurde, und beendet ggf. das Formular:
    if(e.Alt & (e.KeyCode == Keys.F4) ) { CanClose = true; Close(); }
    <b>Form1.CancelButton = ButtonExit</b> sorgt dafür, dass auch mit <b>ESC</b> das Formular verlassen wird.
    <b>Closing()</b> wertet einfach CanClose aus: e.Cancel = !CanClose.

    Beim Drücken des <b>X-Buttons</b> kann ich nicht CanClose = true setzen.

    So funktioniert es. Aber kann man die verschiedenen Varianten nicht kürzer organisieren, d.h. ohne CanClose und mit weniger als 4 Ereignissen?

    Danke für Ideen! Jürgen

  • #2
    Ideen werden nicht mehr benötigt; ich bin selbst auf ein einfacheres Verfahren gekommen:

    <b>CanClose</b> erhält den Standardwert true.
    <b>ButtonOK_Click()</b> prüft die Eingaben und setzt CanClose entsprechend auf true oder false.
    <b>Closing()</b> übernimmt dieses Prüfungsergebnis und setzt wieder den Standardwert:
    e.Cancel = !CanClose;
    CanClose = true;

    Dann erledigen die Standardwerte (DefaultButton, CancelButton, X-Button, Alt-F4) alles automatisch. Lediglich KeyUp() wird für Alt-F4 benötigt, sofern die ControlBox abgeschaltet wird.

    Übrigens: Die <b>ControlBox</b> steuert auch den X-Button, nicht nur das Systemmenü; in der NET-Doku fehlt diese Information.

    Vielleicht finden auch andere diese Hinweise nützlich.

    Jürge

    Comment

    Working...
    X