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

slim369 Messages postés 39 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 3 juin 2005 - 3 juin 2005 à 12:44
blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 juin 2016 - 1 mai 2012 à 22:27
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

cs_steppenwolf Messages postés 84 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 29 décembre 2006
3 juin 2005 à 14:22
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) !
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
4 juin 2005 à 10:14
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)
0
blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 juin 2016 1
1 mai 2012 à 22:27
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
0
Rejoignez-nous