2010-04-20 19 views
7

Quiero cancelar un evento desde ese ámbito de función.Cómo cancelar un evento en winforms?

Por ejemplo. Presioné el botón clic evento y en la validación falsa, quiero cancelar este evento. Del mismo modo, quiero cancelar otros eventos también.

¿Cómo puedo hacer esto en C#

Respuesta

7

Depende del escenario; en la mayoría de los casos: en lugar de cancelar caso, simplemente no hacer nada, por ejemplo:

private void SaveDataClicked(object sender, EventArgs args) { 
    if(!ValidateData()) return; 
    // [snip: code that does stuff] 
} 

o:

private void SaveDataClicked(object sender, EventArgs args) { 
    if(ValidateData()) { 
     // [snip: code that does stuff] 
    } 
} 

Hay algunos eventos que exponen un CancelEventArgs (o similar), lo que permite para cancelar el comportamiento external externo a través del args - form-closing es el ejemplo más obvio (establecer e.Cancel = true;).

Tenga en cuenta que en este escenario no tendría un resultado de diálogo automático en el botón; aplique eso manualmente cuando (si) el controlador finaliza correctamente.

+0

@Marc: Thx para proporcionar un conocimiento útil. Trabajé para ambos escenarios. –

+0

Esto solo no funciona en ** cancelButton_Click ** y ** okButton_Click ** ya que tienen el efecto secundario de cerrar el cuadro de diálogo. Pero, sí, para cualquier botón que no configure _automatically_ DialogResult, esto es más fácil. –

-3
private void SaveDataClicked(object sender, EventArgs args) 
{ 
    args.cancel = true; 
} 
+2

Lamentablemente, ** EventArgs ** no tiene una propiedad **. Cancelar **. Tampoco una ** propiedad Handeled **. Por lo tanto, necesitará un tipo diferente de EventArgs, como ** RoutedEventArgs **, por ejemplo. –

+0

esto me ayudó :) muchas gracias –

Cuestiones relacionadas