60 votes

CheckBox CheckedChanged de Windows Forms vs CheckStateChanged

Windows Forms de CheckBox contrôle implémente CheckedChanged et CheckStateChanged des événements. Autant que je sache, les deux se déclenchent lorsque le statut coché de la case à cocher est modifié.

CheckedChanged précède CheckStateChanged , mais à part cela, je ne vois aucune différence. Est-ce que je manque quelque chose? Doit-on privilégier l'un par rapport à l'autre?

69voto

stuartd Points 22668

CheckState (et donc CheckStateChanged) permet d'utiliser une case à cocher qui peut avoir trois valeurs: elle peut être cochée, décochée ou "indéterminée" - c'est-à-dire que ThreeState est défini sur true.

Si vous n'utilisez pas ThreeState, CheckedChanged est tout ce dont vous avez besoin.

20voto

Jacob G Points 2666

Je suppose que cela a à voir avec les cases à cocher à trois états. Voici les tripes du setter CheckState:

  if (this.checkState != value)
 {
   bool flag = this.Checked;
   this.checkState = value;
   if (base.IsHandleCreated)
   {
     base.SendMessage(0xf1, (int) this.checkState, 0);
   }
   if (flag != this.Checked)
   {
     this.OnCheckedChanged(EventArgs.Empty);
   }
   this.OnCheckStateChanged(EventArgs.Empty);
 }
 

-4voto

TWood Points 901

CheckState se déclenche avant que la nouvelle valeur soit validée. CheckStateChanged se déclenche après la validation de la nouvelle valeur.

Si vous cherchez à dataset.haschanges d'effectuer une mise à jour après une modification de valeur de case à cocher, vous devez utiliser l'événement checkstatechanged. Assurez-vous simplement de désactiver threestate pour éviter les problèmes avec NULL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X