Rendre une page d'un tabcontrol invisible en vb.net

Signaler
Messages postés
39
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
3 juin 2005
-
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
-
Salut ,


J'aimerais rendre une page d'un tabcontrol invisible lorsque j appui sur un bouton ,comment dois-je faire en vb.net?


Merci d'avance


Slim

3 réponses

Messages postés
84
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
29 décembre 2006

Salut !

J'ai essayé pas mal de choses pour ton pb mais ca ne marche pas !
TabPage.Visible = false ne fonctionne pas !
Le seul truc que tu peux faire à la limite c'est :
- TabPage.Enabled = false,
- ou désactiver les pages : dans Private Sub TabControl_SelectedIndexChanged, tu testes la TabPage sélectionnée et tu fais le traitement approprié (msg d'erreur ou affichage de la TabPage) !
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

Salut, il doit y avoir une solution. Cependant, a la réflection et du point de vue de la conception des tabcontrols, rendre un tabpage invisible parait insensé, je m'explique :

les tabpages sont crées a partir d'une collection, on peut facilement imaginer que pour le design, un bouclage sur toute la collection est crée et donc, même la tabpage que l'on ne souhaite pas rendre visible, sera "comptabilisée" au moment du design. Je doute que la fonctionnalité de "visible/invisible" est été integré pour l'utilisateur.

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er)
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Comme indiqué dans le message précédent, la propriété Visible sur un onglet n'est pas disponible. Il faut obligatoirement supprimer l'onglet pour le plus l'afficher. Dommage quand il s'agit d'un on affichage temporaire ou en fonction d'un mode pour des options (par exemple: expert, débutant)

En cherchant une solution, j'ai trainé du coté des exemplse de UserControl Utilisant un TabControl, et par hasard je suis arrivé sur un code(http://www.codeproject.com/Articles/286695/Switchcontrols-now-with-text) qui gérait le passage d'un TabPage à un autre sans utiliser les onglets et sans les afficher !

La solution qui consiste donc à ne pas afficher (dessiner à l'écran) l'ensemble des onglets et, donc, à réaliser leur affichage par un moyen externe via la propriété .SelectedIndex. Ce n'est pas nécessairement le but rechercher, mais il est plus aisé d'implémenter un mode d'affichage tout en conservant dans son IDE les Composants VB et leur disposition, comme l'exemple du UserControl dont est issu la Class ci-dessous.

Pour utiliser cette Classe, depuis Visual Studio, créez un nouveau projet de type Bibliothèque de classe, puis ajouter juste ce code. Vous ajouterez ce projet à votre projet habituel. Vous obtiendrez un nouveau Composant VB depuis la Boite à outils que vous ajouterez dans votre écran ([Design]). Le nouveau composant est 100% équivalent au TabControl classique, sauf qu'à l'exécution les onglets ne sont pas affichés, sauf le premier.

''' <summary>
''' Classe en héritage du contrôle TabControl, juste pour supprimer l'affichage des onglets
''' et permettre une gestion d'affichage des TabPages par un mécanisme externe au TabControl.
''' </summary>
''' <remarks>
''' Ce Mode de gestion est une réponse à l'impossibilité d'avoir une propriété Visible sur les
''' onglets et empêcher une sélection autre que par un traitement d&#8217;événement à la sélection
''' d'un onglet.
''' 
''' Cette méthode de gestion est issue d'un code, suite à longue recherche sur la capacité à
''' rendre invisible un TabPage :
''' http://www.codeproject.com/Articles/286695/Switchcontrols-now-with-text
''' </remarks>
''' -----------------------------------------------------------------------------
Public NotInheritable Class TabLessControl

    Inherits TabControl

    Protected Overrides Sub WndProc(ByRef theMsg As Message)
        Try
            If theMsg.Msg = &H1328 AndAlso Not DesignMode Then
                theMsg.Result = New IntPtr(1)
            Else
                Call MyBase.WndProc(theMsg)
            End If

        Catch Err As Exception
            Call MsgBox("Unable to overrides official TabControl objet by TabLessControl: " & theMsg.Msg & vbCrLf & _
                        "Source: " & Err.Source & vbCrLf & _
                        "Message: " & Err.Message, _
                        MsgBoxStyle.Critical, "Control Error")
        End Try
    End Sub

End Class



www.blq-software.com