J'essaie de déplacer 3 contrôles parmi 3 onglets lorsque l'utilisateur sélectionne un onglet différent. Ils sont un contrôle toolrtip, un contrôle richtextbox et un contrôle combobox.Déplacer les contrôles parmi les onglets
Les nouvelles valeurs de certaines propriétés seront affectées à richtextbox et à combobox en fonction de la page sélectionnée, la barre d'outils doit être la même, mais ses méthodes (type de police typique) doivent affecter la zone de texte riche visible sur l'onglet actuel uniquement. Maintenant, parce que changer la valeur d'affichage d'une combobox signifie aussi que la zone richtext de la page courante sera assortie d'une nouvelle valeur pour sa propriété text, je ne voulais pas créer 3 comboboxes et 50 richtextboxes pour chaque occasion . Je veux en créer un seul ensemble et conserver leurs valeurs dans un certain type de collection de chaînes avant que les utilisations ne soulèvent un événement, c'est-à-dire soit changer l'élément affiché de la liste déroulante, soit changer la page.
Ne pas avoir fait cela avant d'avoir lu ce http://www.vbforums.com/showthread.php?478602-2005-Move-controls-From-One-Tab-Page-To-Another qui suggère de créer un contrôle pour son occasion, ce qui semble absurde me ...
Ma situation actuelle est que j'ai les contrôles d'affichage à TabPage1 par concepteur puis j'ai essayé quelque chose comme ça
Private Sub TabPage_Enter(sender As Object, e As EventArgs) Handles TabPage1.Enter, TabPage2.Enter, TabPage3.Enter
Select Case DirectCast(sender, TabPage).Name
Case "Tabpage1"
TabPage1.Controls.Add(RichTextBox1)
TabPage1.Controls.Add(ToolStrip1)
TabPage1.Controls.Add(ComboBox1)
Case "TabPage2"
TabPage2.Controls.Add(RichTextBox1)
TabPage2.Controls.Add(ToolStrip1)
TabPage2.Controls.Add(ComboBox1)
Case "TabPage3"
TabPage3.Controls.Add(RichTextBox1)
TabPage3.Controls.Add(ToolStrip1)
TabPage3.Controls.Add(ComboBox1)
End Select
End Sub
maintenant, en cas de changement des onglets, les commandes apparaissent sur TabPage2 et tabpage3 mais TabPage1 reste vide. J'ai essayé de le faire à l'événement de chargement de formulaire
TabPage1.Controls.Add(RichTextBox1)
TabPage1.Controls.Add(ToolStrip1)
TabPage1.Controls.Add(ComboBox1)
mais toujours tabpage1 reste vide lorsque vous revenez à sa vue. Je ne suis pas sûr que ce que j'essaie est ce que je veux faire, mais je comprends que pour cette approche je ne devrais pas utiliser de concepteur du tout et créer plutôt les contrôles seulement dans la taille et le lieu de manipulation de code moi-même. Veuillez nous conseiller s'il y a une "bonne" façon de procéder, principalement pour garder le code court et bien rangé. TIA.
ps.Comme j'écrivais ceci, j'ai réalisé que je pouvais créer seulement trois de chaque contrôle dans le concepteur pour chaque onglet et ensuite gérer le changement de combobox avec la collection de chaînes que j'avais en tête. Semble assez sensé mais je veux toujours savoir à ce sujet, d'où je pose toujours cette question.
Est-ce que "Tabpage1" doit avoir un "P" majuscule dans votre déclaration de cas, pour correspondre à votre nom TabPage1? –
Cela a été bien repéré, je cherchais une faute de frappe, mais parce que j'étais concentré sur le numéro de tri 1,2,3 je n'ai pas remarqué: D – kokotas
Alors évidemment les contrôles apparaissent maintenant sur le premier onglet (putain j'ai vérifié 3 fois avant de faire ce post et je n'ai pas repéré la faute de frappe): P Mais je me demande ce qui se passe exactement quand j'ajoute le contrôle sur la page, chaque fois que l'événement se déclenche? Est-ce la façon de le faire? Je suppose que je vais le découvrir pendant que je progresse avec mon code. Mais s'il y a un meilleur moyen, veuillez l'ajouter comme réponse, ou répondez par un message informatif sur ce qui se passe avec l'ajout continu du contrôle. TIA – kokotas