J'ai un contrôle utilisateur qui contient un FlowLayoutPanel
(flux de descente) avec un tas de radiobuttons. Le contrôle expose un événement CheckedChanged
qui se déclenche chaque fois que l'un des contrôles de radiobutton a changé.Les touches fléchées et le changement de focus du contrôle accrochent l'application
Mon formulaire contient la commande usercontrol et une zone de texte. Je souscris l'événement CheckedChanged
d'usercontrol et selon le bouton radio vérifié, je désactive la zone de texte ou mets un focus dans la zone de texte. Tout cela fonctionne très bien avec un clic de souris lorsque vous changez l'état de vérification du radiobutton. Cependant, cela sera suspendu indéfiniment lorsque vous utilisez les touches fléchées. Je ne comprends pas pourquoi la différence.
Voici les étapes pour reproduire le comportement que je vois:
Créer une usercontrol et déposez un contrôle
FlowLayoutPanel
et définir sesFlowDirection = TopDown
. Puis ajoutez deux radiobuttons auFlowLayoutPanel
.Fournir un gestionnaire d'événements dans le usercontrol
public event EventHandler CheckedChanged { add { radioButton2.CheckedChanged += value; } remove { radioButton2.CheckedChanged -= value; } }
Créer une forme de fenêtres et déposez le contrôle de l'utilisateur ci-dessus. Ajoutez une zone de texte et définissez
Enabled
sur False. Abonnez-vous à l'événementCheckedChanged
du usercontrol comme suitprivate void userControl11_CheckedChanged(object sender, EventArgs e) { textBox1.Select(); }
Run. Notez que si vous utilisez la souris pour cliquer entre les radiobuttons, la chose fonctionne bien; mais il va planter si vous utilisez les touches fléchées haut/bas.
Je parie votre question ne contient pas suffisamment d'informations pour résoudre ce problème. Pouvez-vous cuisiner le cas de test le plus simple possible (le moins de lignes de code) qui illustre le problème et l'ajouter ici? – Rytmis