Maison >développement back-end >C++ >Comment puis-je masquer les boutons TabControl tout en utilisant les TabPages pour les contrôles de panneau empilés ?
Gérer les boutons TabControl cachés pour les contrôles de panneau empilés
Gérer individuellement plusieurs panneaux avec des masques de données peut être fastidieux. Cet article explore des solutions alternatives pour rationaliser ce processus, en se concentrant spécifiquement sur le masquage des boutons TabControl.
Énoncé du problème :
Le besoin se fait sentir de gérer plusieurs panneaux avec des données variables, chacun représenté par un contrôle TreeView. La méthode manuelle actuelle de gestion de la visibilité des panneaux n'est pas pratique, en particulier dans le concepteur d'interface utilisateur.
Solution 1 : TabControl avec des boutons cachés
Une solution potentielle consiste à utiliser un TabControl où chaque panneau réside dans une TabPage. Cependant, l'obligation de masquer les boutons TabControl pose un défi.
Solution 2 : StackPanelControl personnalisé
Une solution idéale serait un "StackPanelControl" qui organise les panneaux dans un façon pile. Malheureusement, un tel contrôle n'existe pas nativement.
Solution optimale :
Pour surmonter les limites des deux approches, nous exploitons une technique intelligente utilisant l'API Win32. En interceptant le message TCM_ADJUSTRECT envoyé par le TabControl, nous pouvons supprimer l'affichage des boutons d'onglet. Cela nous permet d'implémenter les fonctionnalités souhaitées tout en conservant la facilité de travail avec les contrôles TreeView.
Implémentation :
Pour y parvenir, créez une nouvelle classe dans votre projet et implémentez le code fourni ci-dessous. Compilez la classe et faites glisser et déposez le nouveau contrôle de la boîte à outils sur votre formulaire.
using System; using System.Windows.Forms; class StackPanel : TabControl { protected override void WndProc(ref Message m) { // Hide tabs by trapping the TCM_ADJUSTRECT message if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1; else base.WndProc(ref m); } }
Cette solution offre les avantages de l'utilisation d'un TabControl tout en conservant une interface propre et conviviale. Vous pouvez facilement changer de vue à l'aide des propriétés SelectedIndex ou SelectedTab.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!