La Conception De Windows.Formulaire avec plusieurs panneaux -> Comment faire pour masquer un panneau (comme un PS couche)
Comment puis-je masquer un panneau dans Visual Studio 2008 Concepteur de Formulaire comme si une couche en PS? Sinon, quelqu'un peut-il recommander une autre de meilleure méthode pour la conception de plusieurs "écrans" qui doit être cliqué par l'utilisateur?
OriginalL'auteur Nona Urbiz | 2009-08-10
Vous devez vous connecter pour publier un commentaire.
Ce que vous décrivez est un magicien, et vous pourriez vouloir étudier l'approche de Eric J.
Cependant, quand j'ai le cas où je veux avoir plusieurs panneaux dans le même espace à l'intérieur de mon INTERFACE et je veux passer entre eux, dans le concepteur, j'aime utiliser un TabControl et de masquer les onglets sur le TabControl. Cela rend l'INTERFACE plus facile à gérer au moment de la conception et le code est assez simple pour basculer entre les onglets au moment de l'exécution.
J'ai fait un contrôle personnalisé qui dérive de TabControl appelé HiddenTabsControl c'est très simple. La classe remplace uniquement les WndProc et permet le TabControl de la classe de base occupons de tout. Tout ce que vous devez faire est de:
Copie de ce remplacement pour WndProc dans la classe:
Maintenant, vous pouvez changer les onglets dans le concepteur et la conception de l'INTERFACE utilisateur facilement et dans le code, vous pouvez gérer les événements de changement d'onglets que de besoin. Modification de l'onglet Sélectionné est facile à faire avec:
Un côté pour effet de supprimer les onglets, c'est l'espace qui les onglets occuper lorsque le contrôle est construit. Leur suppression va faire de l'espace de la HiddenTabsControl occupe le changement par la contraction des. J'ai l'habitude de définir le point d'Ancrage de la HiddenTabsControl vers le bas pour l'empêcher de rétrécir.
Aussi, vous voulez toujours avoir la propriété MultiLine ensemble de
true
, sinon les flèches pour faire défiler la barre d'onglets apparaissent, si vous ne pouvez pas cliquer sur eux.Cette méthode n'est pas portable avec Mono.
J'avais trouvé cette astuce plus tôt - merci!
Comment pourrais-je écrire ce code en VB? l' (IntPtr)1 et la Base.WndProc me donnent un peu de mal :-/
OriginalL'auteur Jeff
J'ai utilisé cet Assistant code dans un projet récent, et il a bien fonctionné.
Il fournit la base de l'expérience que vous êtes après.
OriginalL'auteur Eric J.
Une autre, moins élégant, mais rapide hack, la démarche est tout simplement de ne pas ajouter le panneau de la mère jusqu'à l'exécution. En faisant cela, le concepteur n'a aucune idée de l'endroit où le panneau appartient avant la compilation, et il ne sera pas affiché.
Par exemple, trouver le bloc de code dans lequel vous ajoutez des contrôles à l'écran parent:
Commentaire ou supprimer l'énoncé, puis de trouver la poignée de l'événement qui se produit lorsque le formulaire est chargé:
Puis dans la définition du gestionnaire d'événements, ajouter le contrôle de la forme:
Je n'ai pas eu aucun des effets secondaires indésirables en faisant cela, mais si quelqu'un a une bonne raison de ne pas je serais intéressé par elle.
OriginalL'auteur B L