Ali ste vedeli, da... CancelEventArgs

Da malo popolnimo te forume... evo prvi prispevek iz serije "Ali ste vedeli, da..." Hkrati vabim vse člane, da v ustreznem forumu objavijo svoj priljubljen del kode ali nasvet. Torej...

Ali ste vedeli, da... v ogrodju .NET obstaja razred CancelEventArgs, ki ga lahko uporabimo pri definiciji dogodka, ki ga sprožimo tik pred izvedbo neke operacije?

CancelEventArgs je izpeljan iz razreda EventArgs in ima dodano lastnost Cancel; glede na vrednost te lastnosti se komponenta lahko odloči, ali naj nadaljuje nameravano operacijo ali ne. Uporaba CancelEventArgs v povezavi s povezanimi dogodki ponavadi izgleda podobno kot v spodnjem vzorcu (C#). V kodi je uporabljeno tudi priporočeno poimenovanje dogodkov: *ing pred izvedbo operacije in *ed po njeni izvedbi.

public class SomeClass
{
   public event EventHandler<CancelEventArgs> Opening;
   public event EventHandler<EventArgs> Opened;

   protected virtual void OnOpening(CancelEventArgs e)
   {
      EventHandler<CancelEventArgs> handler = Opening;
      if (handler != null)
      {
         handler(this, e);
      }
   }
   protected virtual void OnOpened(EventArgs e)
   {
      EventHandler<EventArgs> handler = Opened;
      if (handler != null)
      {
         handler(this, e);
      }
   }

   public void OpenSomething()
   {
      CancelEventArgs args = new CancelEventArgs();
      OnOpening(args);
      if (args.Cancel)
      {
         return;
      }
      // Do some opening
      OnOpened(new EventArgs());
   }
}

Avtor: AndrejT, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

MihaM
MihaM - četrtek, 16. marec 2006

Vedeli, vedeli :-) Koristna stvar vsekakor.

AndrejT
AndrejT - četrtek, 16. marec 2006

Zgornji prispevek ne temelji na kakšnem konkretnem viru in je&nbsp;bolj rezultat nekega trenutnega navdiha . Več o CancelEventArgs pa si lahko prebereš na http://msdn2.microsoft.com/en-us/library/system.componentmodel.canceleventargs.aspx.

bojanv
bojanv - četrtek, 16. marec 2006

A lahko mogoce date kaksen link zraven, kje ste to prebrali?