Utilisation de J'ai des rangées de données dans une grille. Basé sur les propriétés de la ligne sélectionnée, je montre une page d'onglet différente pour avoir une disposition d'interface utilisateur différente. Mais lorsque vous utilisez des touches fléchées pour faire défiler les lignes, la mise au point bascule sur l'onglet sélectionné - que je ne veux pas arriver. P>
Merci. P> tabcontrol.selectThab ("...") code> montre l'onglet, mais cela donne également la mise au point de l'onglet. Je voudrais montrer un onglet particulier, mais garder la concentration là où c'est. P>
4 Réponses :
Je ne pense pas qu'il y ait une fonction intégrée, mais vous pouvez faire de cette manière: ici, je sauvegarde le contrôle ciblé actuel, sélectionnez l'onglet souhaité et enfin Définissez la mise au point sur le contrôle d'origine. P> Sauter Boolean est nécessaire, car vous donnez l'accent sur la grille que vous déclenchez sélectionnez à nouveau code> à nouveau, causant une boucle infinie. P> p>
Bien que je ne pense pas que ce soit une solution idéale, cette idée a fini par travailler mieux dans mon application. Merci.
Je ne sais pas si cette solution fonctionnera dans tous les cas, voir Cette question .
J'ai essayé cela et je n'ai pas aimé parce que vous voyez le formulaire clignotant sur le terrain, puis à l'arrière-plan. C'est une sollicitude laid. La solution de Josh fonctionne de manière transparente.
Vous pouvez essayer de désactiver le tabcontrol code> avant de définir l'onglet Sélectionné, puis réactivez-la. Cela l'empêchera de prendre la mise au point. J'ai testé cela sur un contrôle de tabulation avec quelques contrôles à ce sujet, et je n'ai vu aucun changement visuel, mais vous devrez l'essayer dans votre UI et voir s'il vous convient bien pour vous. tabControl1.Enabled = false;
tabControl1.SelectTab("tabPage4");
tabControl1.Enabled = true;
C'est une bonne idée et cela fonctionne correctement, mais la performance n'est pas très bonne pour activer / désactiver le contrôle. La raison en est que chacune de mes pages d'onglets a beaucoup de commandes, de sorte que chacune est désactivée / activée, qui prend beaucoup de temps et ne semble pas superbe dans l'interface utilisateur.
@Thesan, je ne sais pas s'il y a une autre façon de l'arrêter de prendre la mise au point. Je suppose que la mise au point de la commande de l'onglet après que l'utilisateur sélectionne une nouvelle ligne de la grille ne fonctionne pas pour vous?
J'ai précédemment supprimé ma solution, car est un peu hacky / sanguant, mais peut-être plus rapide que de désactiver / activer le tabcontrol. Je l'informe si tu veux essayer;)
Cela fonctionne, mais sa lente en raison du grand nombre de contrôles dans mon tabcontrol.
La désactivation de la commande de l'onglet a des effets secondaires différents pour les contrôles contenus. Ainsi, faites attention si vous appelez cette méthode comme une réaction à un événement de l'un des contrôles contenus.
Il est préférable de désactiver une seule page d'onglet plutôt que de tout le contrôle comme supposé par Josh.
Ceci sélectionne les pages à onglet tout en gardant la mise au point sur le dessus, comme on l'a demandé ci-dessus: tc est ici mon cas pour le type Le morceau de code complet est le suivant: p> Ce bool (flèches) code> i. e. Lorsque je vais en avant (par clé.right.right code>) et jetez le dernier livre Tabpage code> Je souhaite avoir mon objectif sur [0] code> sans activer le < Strong> DataGridView strong> que j'ai dans cette page, et quand je reviendrai en arrière (par key.left code>) et atteindre [0] code> je veux avoir keytc code> est renvoyé dans un cas dans une instruction de commutation pour l'évaluation clé dans: p>
N'est-ce pas l'essence la même réponse que @AnDrift?
Il est préférable de désactiver un seul tabage plutôt que le contrôle entier ou de modifier manuellement la mise au point des formulaires, car vous ne voyez rien de clignoter. Cette réponse devrait être la réponse acceptée. J'ai essayé toutes les réponses et celle-ci fonctionne mieux.
base sur la solution proposée par "Jeff Ogata: vous pouvez essayer de désactiver le tabcontrol avant de définir l'onglet Sélectionné, puis la réaffectant-la. Cela l'empêchera de prendre la mise au point", ci-dessous ma solution:
tabMain.SelectedPageChanging += (s, e) =>
{
tabMain.Enabled = false;
};
tabMain.SelectedPageChanged += (s, e) =>
{
tabMain.Enabled = true;
};
Il est préférable de désactiver une seule page d'onglet plutôt que de tout le contrôle comme supposé par Josh.