Changer le background d'une toolbar en VS2003

Mikels Messages postés 11 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 22 août 2006 - 23 mars 2006 à 18:00
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 25 mars 2006 à 00:58
Salut,

Est-ce que quelqu'un aurait des indications (ou au moins quelques pistes à suivre) pour faire changer le background d'un controle toolbar placé dans un windows form.

J'ai déjà passé plusieurs heures sur le sujet sans grand succès à tenter de surcharger le contrôle avec des propriétés et méthodes pour changer la couleur de fond et/ou mettre une image en background. Pour le moment, rien n'a fonctionné.

Merci d'avance

Mikels

3 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
24 mars 2006 à 01:00
Ca doit être possible avec la fonction SetClassLong et le flag GCL_HBRBACKGROUND de l'API Windows, mais j'ai pas d'exemple :/
0
Mikels Messages postés 11 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 22 août 2006
24 mars 2006 à 09:19
Merci pour l'idée Lutinore,

J'aurais peut-être dû préciser que je suis loin d'être un expert en C#... j'ai regardé la doc sur la fonction que tu m'a indiqué et c'est un peu du chinois pour moi.
Est-ce que tu peux détailler ou m'indiquer où je peux trouver des infos ?

Mikels
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
25 mars 2006 à 00:58
As tu essayé de changer la propriété Appearance, ça donne une ToolBar qui prend la couleur de sa forme parent et rien n'empêche de peindre le reste de la forme d'une autre couleur :

// Dans le constructeur.


ToolBar tb = new ToolBar( );
tb.Dock = DockStyle.Top;
tb.Appearance = ToolBarAppearance.Flat;


this.BackColor = Color.Pink;
this.Controls.Add( tb );


// Dans la forme.


protected override void OnPaint( PaintEventArgs e )
{
base.OnPaint( e );
e.Graphics.FillRectangle( Brushes.Azure, this.ClientRectangle );
}
0
Rejoignez-nous