IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

TabControl sans Tab


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 104
    Par défaut TabControl sans Tab
    Bonjour à tous,

    je souhaiterais créer une fenetre dans le même style que Outlook 2003, donc avec un menu à gauche sous forme de treeView par exemple. Lors d'une sélection dans ce tree view, le contenu du panneau principal s'adapterait à la sélection. D'apres vous, quel composant serait le plus adéquat ? je pensais à un tabControl, mais le probleme c'est que je n'ai pas envie de voir apparaitre les différents TabPages. Alors quoi d'autre ? des panels pour chaque choix de menu et jouer avec les proriétés visible ? difficile pour le design...

    j'attends vos avis sur la question...
    mercimerci !

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    beh, le TabPanel sans l'affichage des onglets.. ya pas

    donc, à moins de te faire ton propre TabOnglet, ou d'en trouver un déja fait
    sur le net, tu peux oublier

    Je pense que dans outlook 2003, c'est soit ce que MS a fait, soit ils font un switch entre différents panels

    Je crois cela dit, que la question a déja été posé ici


    The Monz, Toulouse

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 104
    Par défaut
    ou alors je pensais à une autre solution, c'est de créer des fenetres sans bords (propriété FormBorderStyle à "none") et de venir les placer à l'ouverture à l'endroit prévu à cet effet dans la Form principale... Mais alors bonjour le repositionnement en cas de déplacement de la fenetre principale... cette solution ne fait quand-même pas hyper pro

    enfin bon, je vais toujours attendre de voir si qqun n'a pas une solution miracle

    Merci d'avance !

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    beh, tu peux placer dans un panel en mode Dock.Fill les différents user Control qui correspondraient à tes différentes pages...

    Comme ca, pour les pb de resize, tu les zappes illico

    The Monz, Toulouse

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par nico_4802 Voir le message
    ou alors je pensais à une autre solution, c'est de créer des fenetres sans bords (propriété FormBorderStyle à "none") et de venir les placer à l'ouverture à l'endroit prévu à cet effet dans la Form principale... Mais alors bonjour le repositionnement en cas de déplacement de la fenetre principale... cette solution ne fait quand-même pas hyper pro
    Elle n'a surtout aucun intérêt.
    Pourquoi utiliser des fenêtres, alors qu'il suffit de définir un container avec un panel que l'on affiche et que l'on cache.
    Sur ce genre d'affichage, le plus simple est d'utiliser un splitter avec le contrôle de menu dans le panel de gauche et les contrôles que l'on charge dans le panel de droite.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Elle n'a surtout aucun intérêt.
    Pourquoi utiliser des fenêtres, alors qu'il suffit de définir un container avec un panel que l'on affiche et que l'on cache.
    Sur ce genre d'affichage, le plus simple est d'utiliser un splitter avec le contrôle de menu dans le panel de gauche et les contrôles que l'on charge dans le panel de droite.
    Un autre Splitter à droite pour l'affichage rapide en dessous

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    tiens une astuce que j'ai trouvé

    Tu fais cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    namespace TabLessApp
    {
        public partial class MyTab : TabControl
        {
            private bool userModeShow = false;
     
            public bool UserModeShow
            {
                get { return userModeShow = false; }
                set
                {
                    userModeShow = value;
                    UpdateUserMode();
                }
            }
     
            private void UpdateUserMode()
            {
                if (userModeShow)
                {
                    SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.SupportsTransparentBackColor, true);
                    SetStyle(ControlStyles.UserPaint, true);
                    ItemSize = new Size(1, 1);
                }
            }
     
            public MyTab()
            {
                InitializeComponent();
            }
     
            protected override void OnDrawItem(DrawItemEventArgs e)
            {
                base.OnDrawItem(e);
                Trace.WriteLine("Draw Item");
            }
     
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
     
                Trace.WriteLine("Paint Pane");
                Graphics g = e.Graphics;
                if (userModeShow)
                {
                    g.FillRectangle(new SolidBrush(SystemColors.Control), ClientRectangle);
                }
            }
        }
    }
    en faisant ItemSize = (1,1) tu réduis la partie de l'onglet
    et avec la surcharge du draw, tu peux ainsi faire ta bordure comme tu l'entends

    Bon, c'est un peu bidouillesque, mais je trouve que ca le fait bien
    (à condition de mettre UsershowMode à True quelque part)

    Comme cela, le control à le look habituel en design et en dehors, dès que tu l'utilises (ou que tu passes UserModeShow à true, bingo, t'as ce que tu veux)

    Ca correspond à ton besoin ?

    The Monz, Toulouse

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Chubyone Voir le message
    Un autre Splitter à droite pour l'affichage rapide en dessous
    Par exemple, oui. Je trouve ce contrôel splitter tout à fait intéressant : il permet d'économiser beaucoup de temps sur les développement d'IHM (qui, il faut le dire, ne présentent pas beaucoup d'interêt).

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    Vous n'aimez pas ma solution ? (du userControl et du item Size ? )

    J'ai essayé en faisant rapidemment un splitContainer avec à gauche une TreeView (et dans chaque node, je mets dans Tag l'index de la tabPage à afficher) et à droite, mon MyTab (hérité de TabControl)

    et sur le changement de selection, je fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (treeView1.SelectedNode.Tag != null)
                {
                    myTab1.SelectedIndex = int.Parse(treeView1.SelectedNode.Tag.ToString());
                }
    Et ca le fait bien

    The Monz, Toulouse

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Ben surtout je ne vois pas du tout l'utilité du Tab control ici.

  11. #11
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    L'utilité ?

    Je dirais que certaines personnes peuvent préférer au designer voir toutes les pages plutot que d'avoir des "tonnes" de page ou de panel que tu vas ajouter
    par code alors qu'avec "ma" solution, tu fais tout au designer....

    Certains préféreront, d'autres non (à priori, toi )

    The Monz, Toulouse

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    L'utilité ?

    Je dirais que certaines personnes peuvent préférer au designer voir toutes les pages plutot que d'avoir des "tonnes" de page ou de panel que tu vas ajouter
    par code alors qu'avec "ma" solution, tu fais tout au designer....

    Certains préféreront, d'autres non (à priori, toi )
    Deux remarques :

    - tout d'abord contraindre le design d'une appli en fonction du designer, ne me semble pas un argument très recevable.

    - par ailleurs, tu ne vas pas que je sache planter des contrôle à la volée dans tes panel, que ce soit des Tab ou des panels de base; a priori (enfin j'espére) tu vas tout mettre dans tes UserControl (qui seront eux visibles au designer) pour d'évidentes considérations de "réutilisabilité". Et c'est ces UserControl quer tu vas envoyer à la volée; donc ton argument ne me semble pas soutenable.

  13. #13
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Certes pour les userControles que tu vas faire séparemment, l'argument me semble valable

    Maintenant, si on part de ce principe, à quoi bon utiliser le tab Control en dehors du bandeau supérieur de switch entre les différents panels ?

    Maintenant, je dis juste que la question a une solution en se basant sur les TabControl meme si suite à nos discussion, une solution plus adéquate réside dans le switch entre panel comme décrit ici

    On a donc 2 solutions utilisables

    The Monz, Toulouse

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 104
    Par défaut
    merci à tous pour vos réponses...

    voici mon idée (un peu bricolée mais enfin) :

    un tabControl dont la propriété

    - Appearence est à "Buttons" ou "FlatButtons" de manière à ce qu'il prenne la couleur de base de la Form, qu'il n'ait pas de bordure, et qu'il se fonde par conséquent dans la masse.
    - Dock est à Fill, que ce soit dans la fenetre ou dans un Panel

    un TextBox (ou Label) dont la propriété backcolor est à la couleur de la fenetre, la propriété dock est à haut (dans le but unique de cacher les onglets du TabControl

    ... et le tour est joué, no problemo en redimensionnant et l'utilisateur final n'y voit que du feu

    2ème point en rapport avec la remarque de Bluedeep :

    - par ailleurs, tu ne vas pas que je sache planter des contrôle à la volée dans tes panel, que ce soit des Tab ou des panels de base; a priori (enfin j'espére) tu vas tout mettre dans tes UserControl (qui seront eux visibles au designer) pour d'évidentes considérations de "réutilisabilité". Et c'est ces UserControl quer tu vas envoyer à la volée; donc ton argument ne me semble pas soutenable.
    euh, je suis d'accord avec toi, la réutilisabilité est la clé de la productivité du programmeur mais ceci dit, ce n'est pas toujours possible, ni même intéressant dans le cadre de certains programmes bien spécifiques...

    Maintenant, la question est ouverte, faut-il programmer tout tout tout en terme de réutilisabilité ? faut-il tout penser dans des controles ? ce n'est pas mon cas mais peut-être ne suis-je pas sur la bonne voie....

    vos opinions à ce sujet m'intéressent aussi

    Merci !

  15. #15
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par nico_4802 Voir le message
    euh, je suis d'accord avec toi, la réutilisabilité est la clé de la productivitédu programmeur mais ceci dit, ce n'est pas toujours possible, ni même intéressant dans le cadre de certains programmes bien spécifiques...

    Maintenant, la question est ouverte, faut-il programmer tout tout tout en terme de réutilisabilité ? faut-il tout penser dans des controles ? ce n'est pas mon cas mais peut-être ne suis-je pas sur la bonne voie....
    Attention : ici, je ne parles pas forcément de réutilisabilité "externe" ou "temporelle" mais interne à l'application. Tout simplement tu peux souhaiter à un moment donné appeler cet affichage depuis un autre endroit dans l'appli et le positionner ailleurs.

    Personnellement, dans cet optique, je ne mets jamais (je dis bien jamais) un contrôle "atomique" (bouton, grid, etc ...) directement dans une form - a l'exception des menus éventuellement; il est toujours et systématiquement encapsulé dans un UserControl.

  16. #16
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    Je comprends bien BlueDeep ta problématique de ré-utilisabilité (interne ou externe), mais je trouve que tu es un peu "intégriste" sur le fait de ne pas mettre de controle atomique (en dehors des menus) dans une form car perso,
    je trouve cela quand meme bien pratique et surtout aussi "plus" rapide...

    Mais bon, chacun ses techniques de dev du moment que ca marche comme voulu, avec les perfos qui vont bien et une maintenabilité de compétition, je suis open sur les différentes méthodes

    The Monz, Toulouse

  17. #17
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    je trouve cela quand meme bien pratique et surtout aussi "plus" rapide...
    Pas forcément car tu isoles plus facilement le code IHM des contrôles et limite donc fortement les bug liés à des effets de bord divers, et donc le temps de mise au point.

    Mais bon, chacun ses techniques de dev du moment que ca marche comme voulu, avec les perfos qui vont bien et une maintenabilité de compétition, je suis open sur les différentes méthodes
    Je n'en fais pas un cheval de bataille non plus, sauf pour les gens qui bossent avec moi

  18. #18
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    par contre, ca "complexifie" juste un peu les "possibles" interactions entre
    les différents user Controle

    Mais bon, c'est du détail tout cela

    The Monz, Toulouse

Discussions similaires

  1. Report xls sans tab
    Par yaya0057 dans le forum Jasper
    Réponses: 1
    Dernier message: 07/11/2008, 09h59
  2. TabControl sans onglet
    Par M_Makia dans le forum C#
    Réponses: 1
    Dernier message: 29/04/2008, 14h30
  3. [VB.NET] Touche Tab et tabcontrol
    Par olbi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/09/2006, 12h37
  4. Retrouver une tab sans un SSTAB et l'afficher
    Par mister3957 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/03/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo