2010-09-22 14 views
1

J'ai un pour chaque boucle passant par les contrôles d'un panneau les désactivant. Lorsque la boucle atteint un certain contrôle de grille et le désactive, l'événement CheckedChanged se déclenche pour le contrôle suivant dans la boucle qui est un bouton radio.La désactivation d'un contrôle peut-elle entraîner la modification d'une valeur de boutons radio?

La pile d'appel est la suivante:

System.Windows.Forms.dll!System.Windows.Forms.RadioButton.OnCheckedChanged(System.EventArgs e = {System.EventArgs}) + 0x15 bytes  
System.Windows.Forms.dll!System.Windows.Forms.RadioButton.WnProc(Microsoft.AGL.Forms.WM wm = WM_RADIOBUTTON_NOTIFYVALUECHANGED, int wParam = 0, int lParam = 0) + 0x17 bytes  
System.Windows.Forms.dll!System.Windows.Forms.Control._InternalWnProc(Microsoft.AGL.Forms.WM wm = WM_RADIOBUTTON_NOTIFYVALUECHANGED, int wParam = 0, int lParam = 0) + 0x9 bytes  
System.Windows.Forms.dll!Microsoft.AGL.Forms.WL.SetEnabled(System.IntPtr hwnThis = 1179753, Microsoft.AGL.Common.BOOL fEnabled = fFalse)  
System.Windows.Forms.dll!System.Windows.Forms.Control._SyncEnabled() + 0x21 bytes 
System.Windows.Forms.dll!System.Windows.Forms.Control.Enabled.set(bool value = false) + 0x61 bytes 

Je ne comprends pas comment control.Enabled = False peut provoquer l'événement OnCheckedChanged.

Est-ce que quelqu'un se trouve dans une situation similaire et peut-être faire la lumière sur ce sujet?

+0

L'intrigue s'épaissit ... Je mets une simple instruction 'if' dans la boucle pour la faire passer la grille et maintenant elle ne déclenche pas l'événement CheckedChanged comme avant. Cela signifie à peu près que c'est le fait que DataGrid est désactivé qui cause cela. –

+0

Maintenant, j'ai essayé de désactiver la grille juste après la boucle et elle désactive ** sans ** déclencher l'événement. Il semble donc que ce soit seulement si elle est désactivée avant que le bouton radio soit désactivé. –

+0

Si je désactive la grille avant la boucle, alors même plus étrange, l'événement de changement de bouton radio se déclenche quand l'autre grille sur le formulaire est désactivée ... –

Répondre

2

Le problème et la solution sont expliqués plus en détail ici: Dev center forums. Ceci explique également pourquoi le réglage de Me.Focus aide à résoudre le problème.

+0

Merci d'avoir trouvé l'explication. –

1

Est-ce que cela se produit pendant l'événement de chargement? Parfois, RadioButtons se déclenche lors de l'initialisation du formulaire, "By Design" selon Microsoft. Si c'est le cas, vous pouvez vérifier dans le gestionnaire OnCheckedChanged pour vous assurer que le formulaire est chargé avant de faire quoi que ce soit.

+0

Malheureusement, non. J'ai remarqué qu'il se déclenche lors de l'initialisation lorsque le code du concepteur définit le bouton radio sur la valeur par défaut qui a été choisie dans le concepteur, mais c'est un peu après. –