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 :

Combobox : élément non-selectionnable ?


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut Combobox : élément non-selectionnable ?
    Bonjour,

    J'ai besoin de mettre un élément non selectionnable, c'est à dire quand la souris passe sur l'item il n'est pas mis en surbrillance, dans une combobox.

    Est-ce que quelqu'un saurait m'apporter une solution ? ou un début de solution ?

    Merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Par défaut
    Si ce que j'ai bien compris, tu veux rendre un champs non sélectionnable dans ta combobox pour indiquer à l'utilisateur de faire un choix, ou autre.

    Si c'est ça regarde dans les propriétés de ta combobox, il y a un champ "texte" qui est le texte par défaut que voix l'utilisateur, le texte saisie apparaitra ainsi dans ta combobox par défaut mais ne seras pas sélectionnable.

    Voilà en espérant t'avoir aidé.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Citation Envoyé par le_joker_fou Voir le message
    Si ce que j'ai bien compris, tu veux rendre un champs non sélectionnable dans ta combobox pour indiquer à l'utilisateur de faire un choix, ou autre.

    Si c'est ça regarde dans les propriétés de ta combobox, il y a un champ "texte" qui est le texte par défaut que voix l'utilisateur, le texte saisie apparaitra ainsi dans ta combobox par défaut mais ne seras pas sélectionnable.

    Voilà en espérant t'avoir aidé.
    Merci pour ta proposition, mais en fait ce n'est pas ce que j'essaye de faire.

    Pour être plus clair voici un exemple, je voudrais avoir dans ma combobox les éléments suivants :

    Catégorie 1
    item 1.1
    item 1.2
    Catégorie 2
    item 2.1
    item 2.2

    Avec les catégories ne pouvant pas être séléctionnées et si la souris passe dessus elles ne sont pas mis en surbrillance, les items fonctionnant normalement (surbrillance et séléctionnables).

    J'ai déjà une classe combobox spécifique à mon projet qui me permet d'afficher des images (à gauche du texte de mes items) et une tabluation, pour faire ca j'ai redéfini la méthode OnDrawItem() de la classe combobox dans ma classe spécifique.

    J'ai aussi une classe pour les items de ma combobox qui me permet de spécifier le texte, l'index de l'image associé dans l'imagelist de ma combobox spécifique et la tabulation à appliquer.

    J'espère avoir rendu mon problème plus clair et je suis toujours à la recherche d'une solution

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Pourquoi ne pas utiliser 2 comboBox : un pour les catégories et l'autre pour les items

    tu charges tous tes catégories dans le premier combo box et la liste du deuxième combo dépendra du choix que l'utilisateur aura fait dans le premier combo box (catégorie).

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Salut,

    Pourquoi ne pas utiliser 2 comboBox : un pour les catégories et l'autre pour les items

    tu charges tous tes catégories dans le premier combo box et la liste du deuxième combo dépendra du choix que l'utilisateur aura fait dans le premier combo box (catégorie).
    Merci pour ta contribution, mais je dois respecter un style d'UI pour une application déjà éxistante. Et je ne peux pas utiliser leur composants car je développe un plugin pour cette application en C# alors que l'application est écrite en C++.

    Donc je dois reproduire leur présentation sous forme de combobox avec des éléments non selectionnable.

  6. #6
    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

    tu as un composant qui fait cela sur www.codeproject.com

    The Monz, Toulouse

  7. #7
    Invité
    Invité(e)
    Par défaut
    Tu nous envoies directementùsur le site de codeplex. Peut on avoir le lien exact. J'ai cherché mais rien trouvé.

    Cette discussion m'interresse vraiment. :

    Ecrire un comboBox qui fait ce que Maxinquaye propose.

  8. #8
    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
    genre

    Ca

    par exemple

    Mais, il me semble qu'il y en a d'autre sur le même site

    The Monz, Toulouse

    PS : J'ai dit CodePRoject, pas codeplex

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    genre

    Ca

    par exemple

    Mais, il me semble qu'il y en a d'autre sur le même site

    The Monz, Toulouse

    PS : J'ai dit CodePRoject, pas codeplex
    Merci beauoup de ton aide, mais ... ce n'est toujours pas ça

    L'exemple que tu as mis en lien permet d'avoir des séparateurs non séléctionnables entre les éléments d'une combobox, mais la méthode OnDrawItem de l'auteur ne fait que dessiner une ligne en dessous d'un item, j'ai essayé de faire en sorte qu'un texte soit écrit à la place de la ligne mais le résultat n'est pas du tout ce que je cherche à obtenir.

    J'ai déjà cherché quelques heures sur Internet, ainsi que sur codeproject, mais peut-être pas avec les bons mots clefs ...
    J'ai essayé les combinaisons de : combobox, item, non selectable, disable

    Merci de votre aide, si jamais quelqu'un a une idée je suis toujours preneur, sinon je vais essayé de me débrouiller tout seul.

  10. #10
    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

    j'ai pas l'impression que ton truc soit compliqué... voici un bout de code

    Tu crées une forme, tu mets une combobox
    J'ai rempli la propriété Items de la combo avec 9 valeurs

    Mode : OwnerDraw => Fixed
    Event pour : DrawItem et ValueChangecommit

    et voici 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    private Dictionary<int, bool> state;
            public Form1()
            {
                InitializeComponent();
                state = new Dictionary<int, bool>();
                state[0] = true;
                state[1] = false;
                state[2] = false;
                state[3] = false;
                state[4] = false;
                state[5] = true;
                state[6] = false;
                state[7] = false;
                state[8] = false;
     
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Properties.Settings.Default.Manue = MyConf.MyBackColor;
            }
     
            private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
            {
                Trace.WriteLine("Draw Item");
                Graphics g = e.Graphics;
                if (state[e.Index])
                {
                    g.DrawString(comboBox1.Items[e.Index].ToString(), Font, new SolidBrush(Color.Red), e.Bounds);
                }
                else
                {
                    e.DrawBackground();
                    g.DrawString(comboBox1.Items[e.Index].ToString(), Font, new SolidBrush(ForeColor), e.Bounds);
                }
            }
     
            private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
            {
                if (state[comboBox1.SelectedIndex])
                {
                    comboBox1.SelectedIndex = -1;
                }
            }

    Pour explication :

    1 Dictionnaire qui contient l'état des objets (ici, j'ai fait vite en mettant un index et un boolean pour savoir si l'objet était utilisable ou pas

    Ensuite, dans le draw, tu fais en le choix en fonction de l'état

    et dans le ValueChangeCommit, tu mets à -1 la selection si celle ci fait partie des objets non sélectionnables

    Ca répond à ta question maintenant ?


    The Monz, Toulouse

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Merci beaucoup the Monz, ta solution est parfaite

    L'astuce se trouve dans l'appel à DrawBackground() et la redéfinition de OnSelectionChangeCommitted() pour ma combobox.

    Problème résolu

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

Discussions similaires

  1. [JTabbed] Onglet grisé (non selectionnable)
    Par Sirkiller dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 18/05/2006, 16h05
  2. Erreur de "Élément non trouvé dans cette collection"
    Par charleshbo dans le forum Access
    Réponses: 4
    Dernier message: 04/05/2006, 18h42
  3. Réponses: 6
    Dernier message: 13/12/2005, 15h00
  4. [JTabbedPane] Onglet non selectionnable et non supprimable
    Par seiryujay dans le forum Composants
    Réponses: 3
    Dernier message: 12/09/2005, 10h08
  5. [HashSet] élément non unique
    Par Wookai dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 02/08/2005, 17h17

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