2010-10-12 2 views
5

Ich habe eine Schaltfläche btnOK auf meinem Formular, mit einer DialogResult Eigenschaft von OK. Die AcceptButton-Eigenschaft des Formulars wird auf btnOK festgelegt. Wenn ich also auf die Schaltfläche klicke, wird das Formular automatisch geschlossen.C#: Wie kann die Schließaktion für eine Schaltfläche, die in einem Formular als Akzeptieren oder Abbrechen festgelegt ist, abgebrochen werden?

Jetzt, in der btnOK_Click() Methode, möchte ich die Möglichkeit, aus der Close-Aktion, z. Wenn ein Fehler aufgetreten ist, möchte ich ein Meldungsfeld anzeigen und das Formular nicht schließen.

Wie mache ich das?

Antwort

6

IMO Sie nur müssen nicht DialogResult Eigenschaft auf die Schaltfläche eingestellt, aber es direkt auf dem Formular im btnOK_Click Ereignis ein:

private void btnOK_Click(object sender, EventArgs e) 
{ 
    if (yeahLetsClose) 
     this.DialogResult = DialogResult.OK; // form will close with OK result 
    // else --> form won't close... 
} 

BTW, AcceptButton Immobilie ist Schlüssel einzugeben (wenn Sie drücken Sie es auf Ihrem Formular, die AcceptButton wird gedrückt)

1

Fügen Sie einen Event-Handler für das Formular schließen Ereignis. Der EventArgs-Parameter sollte eine Cancel-Eigenschaft haben.

+0

Das wird funktionieren, aber es ist kludgy - erfordert ein Flag in dem Click-Ereignis einstellen, die Sie dann in der Abschlussveranstaltung lesen. Wenn das der einzige Weg ist, gut - aber ich war auf der Suche nach etwas weniger Workaroundish ... –

+0

Es ist das oder ändern, wie Ihre Tasten arbeiten, so dass Ihre Verarbeitung entweder schließt oder nicht das Formular manuell geschlossen, und verlässt sich nicht auf das automatische AcceptButton-Zeug. – asawyer

8

Auf Fehler add:

this.DialogResult = DialogResult.None 
Verwandte Themen