2010-10-12 9 views
5

Mam przycisk btnOK w moim formularzu, z właściwością DialogResult z OK. Właściwość formularza AcceptButton jest ustawiona na btnOK. Więc jeśli kliknę przycisk, formularz zamknie się automatycznie.C#: Jak anulować czynność zamykania dla przycisku ustawionego jako przycisk Zaakceptuj lub Anuluj w formularzu?

Teraz, wewnątrz metody btnOK_Click(), chcę możliwość anulowania akcji zamknięcia, np. jeśli wystąpił błąd, chcę wyświetlić okno komunikatu i nie zamykać formularza.

Jak to zrobić?

Odpowiedz

6

IMO po prostu nie trzeba ustawić DialogResult obiekt na przycisk, ale ustawić go bezpośrednio na formularzu w przypadku btnOK_Click:

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 nieruchomość jest związany z klawisza ENTER (kiedy naciśnij go w formularzu, zostanie naciśnięty przycisk AcceptButton)

1

Dodaj procedurę obsługi zdarzeń dla zdarzenia zamknięcia formularza. Parametr EventArgs powinien mieć właściwość Anuluj.

+0

że będziemy pracować, ale to kludgy - wymaga ustawienie flagi w zdarzenia click, które następnie odczytywane w przypadku zamknięcia. Jeśli to jedyny sposób, dobrze - ale szukałem czegoś mniejszego obejścia ... –

+0

To albo zmień sposób działania przycisków, aby twoje przetwarzanie albo zamknęło, albo nie zamknęło formularza ręcznie i nie polegało na Automatyczny materiał AcceptButton. – asawyer

8

Po błędzie dodatku:

this.DialogResult = DialogResult.None 
Powiązane problemy