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 :

Ordre dans un ToolStripPanel


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut Ordre dans un ToolStripPanel
    Bonjour à tous,

    j'ai besoin de remplir un ToolStripPanel avec des ToolStrip construites à la volée (en fonction d'un fichier xml pour la petite histoire).

    Concretement je fais une boucle de ToolStripPanel.Controls.Add(ToolStrip) encapsulé entre un SuspendLayout et un ResumeLayout.

    J'aimerait au final que dans mon ToolStripPanel, les ToolStrip soient positionnés dans l'ordre dans lequel je les ai ajouté.

    Tout se passe bien lorsque je pose un breakpoint au niveau du ResumeLayout: les controles sont dans le bon ordre. A la sortie du ResumeLayout, les toolstrips sont mis dans un ordre completement aléatoire.

    Quelqu'un aurait-il une explication?

    Cordialement.

    PS: Voila le code en version allegée:
    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
    toolBar.SuspendLayout();
    toolBar.Controls.Clear();
     
    foreach (String name in nameList)
    {
    	LogicalToolBar logicalBar = m_toolBarCollection[name];
    	ToolStrip strip = new ToolStrip();
     
    	strip.Name = name;
    	strip.ImageScalingSize = new Size(24, 24);
     
    	foreach (LogicalButton logicalButton in logicalBar.Buttons.Values)
    	{
    		ToolStripButton button = new ToolStripButton();
     
    		button.Name = logicalButton.Name;
    		button.Image = logicalButton.Image;
     
    		strip.Items.Add(button);
    	}
    	toolBar.Controls.Add(strip);
    }
    toolBar.ResumeLayout(); // apres cette ligne la, l'ordre est completement modifié

  2. #2
    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
    Je n'y connais pas grand chose en IHM, mais as tu essayé de mettre la propriété AllowItemReorder à false ?

  3. #3
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Juste comme ça, tu as éssayé sans utiliser SuspendLayout et ResumeLayout ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    A la sortie du ResumeLayout, les toolstrips sont mis dans un ordre completement aléatoire.
    Vraiment aléatoire, ou toujours dans le même ordre ?

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    ToolStripPanel avec des ToolStrip construites à la volée
    Je le fais aussi, mais je n'ai jamais rencontré le problème (les boutons sont bien dans l'ordre de création).
    Est-tu sur de l'ordre dans le foreach ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Merci à tous pour vos réponses.

    Voila en vrac les réactions à vos propositions:

    * il n'y a pas de property AllowItemReorder sur l'objet ToolStripPanel; celle-ci se trouve sur l'objet ToolStrip et permet de réordonner les boutons au sein d'un ToolStrip

    * Avec ou sans le SuspendLayout et le ResumeLayout le résultat est le même. J'ai juste remarqué qu'avec un SuspendLayout, les items étaient bien rajoutées dans l'ordre que je veux (en regardant l'ordre des contrôles dans le ToolStripPanel), mais qu'au moment du ResumeLayout, il les mettait dans le désordre.

    * Le placement automatique des ToolStrip n'est pas aléatoire. Il est certes dans le désordre, mais c'est toujours le même désordre.

    * Les items que je passe dans le foreach sont bien triées au préalable, et leur ajout dans le ToolStripPanel se fait dans le bon ordre.

    Je suis toujours dans le brouillard avec cette histoire...

    En tout cas, encore merci pour vos réponses.

Discussions similaires

  1. Mettre de l'ordre dans les codes mal arrangés !
    Par Ardely dans le forum Delphi
    Réponses: 3
    Dernier message: 24/01/2007, 13h13
  2. Conserver l'ordre dans un Map
    Par rach375 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 26/09/2006, 16h22
  3. l'Ordre dans le classpath
    Par sidi.elmoctar dans le forum Maven
    Réponses: 1
    Dernier message: 28/07/2006, 12h12
  4. Execution d'instruction celon l'ordre dans lequelle on coche des cases
    Par tom box dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/06/2006, 07h29
  5. Réponses: 3
    Dernier message: 18/08/2005, 11h57

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