Question

J'ai un WinForm avec 3 boîtes de groupe, l'un avec des boîtes combo, et deux avec des boutons radio. Je me mis à « ArrêtTabulation = false » tous les partis et leurs enfants contrôles, mais quand je cycle avec TAB, le bouton radio sélectionné dans chacune des deux dernières zones de groupe se concentre.

S'il n'y a aucun moyen de changer ce comportement, ce serait un bon événement pour attraper et se éloigner le foyer? Je ne peux pas trouver un événement « OnFocus ».


La solution consiste à définir une méthode (le code ci-dessous) pour gérer l'événement « Entrée » de chaque bouton radio sous la forme (si c'est ce que vous voulez).

En fait, je ne l'ai fait pour les boutons radio de la première zone de groupe et cela a fonctionné, le second boutons radio de boîte de groupe ne reçoivent pas attention, même si leurs événements « Enter » ne sont pas traitées. Ce n'est pas le comportement que vous attendiez.

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

Dans le fichier * .Designer.cs vous modifiez chaque événement Entrée (pour chaque bouton radio) pour pointer vers un gestionnaire d'événements (la méthode ci-dessus).

this.radiobutton1Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton2Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton3Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
Était-ce utile?

La solution

La documentation MSDN pour RadioButton.TabStop déclare « Cette API soutient l'infrastructure .NET Framework et n'est pas destiné à être utilisé directement à partir de votre code ». Ce qui fondamentalement des moyens, « Cela ne va pas au travail comment vous vous attendez à ».

Cela dit, l'événement Enter se déclenche lorsque le bouton reçoit le focus. Vous pouvez essayer d'utiliser pour déplacer le focus à un autre contrôle.

Autres conseils

Réglage de la ArrêtTabulation False sur un RadioButton pour empêcher les travaux Tabulation vers de contrôle jusqu'à ce que vous sélectionnez actully le bouton radio sans overrides supplémentaires comme suggéré par @msergeant.

EDIT

Le code suivant empêche le code d'obtenir un événement touche de tabulation:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

Les boutons radio se comportent différemment par rapport à l'onglet d'autres contrôles en ce sens qu'ils travaillent dans des ensembles ou des groupes en fonction de réglage de l'index de tabulation ou de placer ensuite des boutons radio dans une zone de groupe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top