ToolStrip et couleur au survol de la souris [Résolu]

scortex84 379 Messages postés mardi 19 mars 2002Date d'inscription 20 avril 2011 Dernière intervention - 17 août 2009 à 10:54 - Dernière réponse : scortex84 379 Messages postés mardi 19 mars 2002Date d'inscription 20 avril 2011 Dernière intervention
- 18 août 2009 à 17:50
Bonjour,

Je me bagare depuis ce matin avec ma ToolStrip (C# 2.0 / VS 2005).

En héritant de la classe "ProfessionalColorTable", j'ai réussi à personnaliser ma barre d'outils pour la rendre plus "sexy".

Par contre je n'ai pas réussi à modifier la couleur du bouton lorsqu'il est survolé par la souris.

La doc MSDN dit que c'est la propriété "GripDark / GripLight", mais cela ne fonctionne pas.

Avez-vous une idée de comment je peux faire ?

Merci d'avance pour votre aide.

Seb.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 17 août 2009 à 17:44
3
Merci
Salut, pour gèrer au mieux le dessin des ToolStrip, il faut mieux dériver son propre renderer :

public partial class Form1 : Form
{
    public Form1( )
    {
        InitializeComponent( );

        ToolStripManager.Renderer = new MyToolStripRenderer( );
        Bitmap icon = this.Icon.ToBitmap( );


        ToolStrip ts = new ToolStrip( );
        ts.Parent = this;
        ts.GripStyle = ToolStripGripStyle.Hidden;
        ts.Items.AddRange
        (
            new ToolStripItem[ ]
            {
                new ToolStripButton( icon ),
                new ToolStripButton( icon ),
                new ToolStripButton( icon ),
                new ToolStripButton( icon )
            }
        );
    }

    private sealed class MyToolStripRenderer : ToolStripProfessionalRenderer
    {
        private Brush magentaBrush =
            new SolidBrush( Color.FromArgb( 50, Color.Magenta ) );


        protected override void OnRenderButtonBackground( ToolStripItemRenderEventArgs e )
        {
            //base.OnRenderButtonBackground( e );

            if ( e.Item.Selected )
            {
                e.Graphics.FillRectangle( magentaBrush, 0, 0, e.Item.Width - 1, e.Item.Height - 1 );
                e.Graphics.DrawRectangle( Pens.Magenta, 0, 0, e.Item.Width - 1, e.Item.Height - 1 );
            }
        }
    }
}

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de Lutinore
Miltiades 233 Messages postés vendredi 21 mars 2003Date d'inscription 25 octobre 2010 Dernière intervention - 17 août 2009 à 12:08
0
Merci
tu peux essayer d'utiliser l'évènement onMousseOver...
tu modifie la couleur dans cette évènement
et tu retablie la couleur dans l'evenement correspondant
(qui doit être onMouseLeave je crois...)


Nul ne devient grand par la guerre...
Commenter la réponse de Miltiades
scortex84 379 Messages postés mardi 19 mars 2002Date d'inscription 20 avril 2011 Dernière intervention - 17 août 2009 à 13:57
0
Merci
Merci pour ta réponse, malheureusement, j'ai déjà essayé et cela ne fonctionne pas.
Commenter la réponse de scortex84
scortex84 379 Messages postés mardi 19 mars 2002Date d'inscription 20 avril 2011 Dernière intervention - 17 août 2009 à 17:57
0
Merci
Super ça a l'air interessant, je vais essayer !

Merci pour ton aide.
Commenter la réponse de scortex84
scortex84 379 Messages postés mardi 19 mars 2002Date d'inscription 20 avril 2011 Dernière intervention - 18 août 2009 à 15:45
0
Merci
Lutinore,

sans vouloir abuser de ta gentillesse, sais-tu comment tu peux définir ta propre ProfessionalColorTable dans ta classe "MyToolStripRenderer" ?

J'ai fais ça, mais cela ne fonctionne pas :

this.ColorTable = new CustomToolStripColorTable();

Une idée ?

Merci !
Commenter la réponse de scortex84
scortex84 379 Messages postés mardi 19 mars 2002Date d'inscription 20 avril 2011 Dernière intervention - 18 août 2009 à 17:50
0
Merci
Bah en fait j'ai trouvé entre temps ! Il faut juste utiliser le constructeur de la classe héritée !

Merci encore pour ton aide.
Commenter la réponse de scortex84

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.