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

C# Discussion :

Désactiver/Griser un TabPage


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Apprenti en développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Apprenti en développement logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 67
    Points : 97
    Points
    97
    Par défaut Désactiver/Griser un TabPage
    Bonjour,

    Je viens vers vous avec une petite problématique qui me prends du temps :

    Je souhaiterais griser un onglet dans une liste afin qu'il ne soit actif qu'à certaines conditions. Et là c'est le drame ... Il apparait que C# ne le gère pas en natif avec bon vieu "Enabled".

    Beaucoup de tutos pour supprimer et réintroduire un onglet (comme dans la FAQ), mais je veux simplement le griser.

    Chez microsoft, j'ai trouvé cette solution :
    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

    C'est un premier pas, mais mon onglet n'est toujours pas désactivé, on "bidouille" un truc pour que quand l'utilisateur clique, hop on lui dit non et on le renvoi a l'onglet courant.

    Après mes recherches, j'ai réussi celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (TabControl.TabPages[1] as Control).Enabled = false;
    Je me rapproche du but, mais l'onglet est toujours actif c'est son contenu qui ne l'est plus.

    Avez vous une idée, une petite aide svp ?

    Merci.
    Cordialement,

    M4itreG

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    M4itreG,

    Vous n'êtes pas très loin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    (tabControl.TabPages[1] as Control).Enabled = false;//ok
     
    // on s'abonne à Selecting
    tabControl.Selecting += tabControl_Selecting;
     
    void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
            {
                if (!e.TabPage.Enabled)
                {
                    e.Cancel = true;
                }
            }
    Pour griser (ou autre couleur) l'en-tête il faut un peu modifier le code:
    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
     
     tabControl.DrawMode = TabDrawMode.OwnerDrawFixed; //dans le constructeur on contrôle le dessin
     tabControl.DrawItem += tabControl_DrawItem;
     
    void tabControl_DrawItem(object sender, DrawItemEventArgs e)
            {
                //couleurs à modifier
                Color backcolor = Color.Transparent;
                Brush forcolor = Brushes.Black;
     
                if (!(tabControl.TabPages[e.Index] as Control).Enabled)
                {
                    backcolor = Color.Gray;
                    forcolor = Brushes.White;
                }
     
                using (Brush br = new SolidBrush(backcolor))
                {
                    e.Graphics.FillRectangle(br, e.Bounds);
                    SizeF sz = e.Graphics.MeasureString(tabControl.TabPages[e.Index].Text, e.Font);
                    e.Graphics.DrawString(
                        tabControl.TabPages[e.Index].Text,
                        e.Font,
                        forcolor, 
                        e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, 
                        e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1);
     
                    Rectangle rect = e.Bounds;
                    rect.Offset(0, 1);
                    rect.Inflate(0, -1);
                    e.Graphics.DrawRectangle(Pens.DarkGray, rect);
                    e.DrawFocusRectangle();
                }
            }
    Pour finir ne pas oublier de mettre à jour au moment de modifier l'état:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (tabControl.TabPages[1] as Control).Enabled = false;//ou true
    tabControl.Refresh();
    Salutations.

  3. #3
    Membre régulier
    Homme Profil pro
    Apprenti en développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Apprenti en développement logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 67
    Points : 97
    Points
    97
    Par défaut
    Merci beaucoup Fabiani.

    Je suis heureux, j'ai enfin pu griser mon onglet. Je désespérais de trouver la solution .

    Bonne Année à vous.

    Cordialement,

    M4itreG

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Désactiver/griser un élément dans une liste
    Par seb-65 dans le forum jQuery
    Réponses: 7
    Dernier message: 31/07/2012, 16h24
  2. [MySQL] désactiver (griser) une entrée d'une liste déroulante
    Par ironman06 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/02/2012, 13h07
  3. Désactiver (griser) un menu
    Par whitebird001 dans le forum MFC
    Réponses: 8
    Dernier message: 28/11/2008, 10h09
  4. Désactiver (griser) des boutons
    Par labrute dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 05/05/2008, 16h26
  5. Griser et désactiver un bouton
    Par skea dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/01/2005, 10h45

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