Tabcontrol + Questions [Résolu]

Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
- - Dernière réponse : cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
- 21 juil. 2005 à 17:36
Bonjour à tous,



Quelqun serait t'il par hazard comment faire clignoter un onglet d'un
tab control et comment afficher aussi une image sur les onglets ?



Par avance, merci.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
24
Date d'inscription
jeudi 10 juin 2004
Dernière intervention
10 août 2007
1
1
Merci
Pour l'image sur les onglets, tu rajoutes d'abord une imagList dans les propriétés de ton tabcontrol, et apres, dans la collections de tes tabPages, t'as un ImageIndex, tu choisi a partir de là, l'image que tu souhaites de ta ImageList

OxN

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_OxN
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Dernière intervention
22 mai 2012
5
1
Merci
Salut emmanuel,

Je pense avoir la solution :

// Timer permettant de faire clignoter le TabPage
private Timer _tabPageClippingTimer;

// Variable indiquant si le TabPage en clignotement est allumé
private bool _isClipping;

// Indice du TabPage en train de clignoté
private int _tabPageIndex;

// Au chargement du formulaire
private void FormLoad( object sender, System.EventArgs e )
{

// Initialise le timer
_tabPageClippingTimer = new Timer();
_tabPageClippingTimer.Interval = 250;
_tabPageClippingTimer.Tick += new EventHandler( TabPageClipping );

// Intercepte l'événement généré lorsqu'un TabPage doit être dessiné
tabControl.DrawMode = TabDrawMode.OwnerDrawFixed;
tabControl.DrawItem += new DrawItemEventHandler( DrawTabControlItem );
}

// Débutte un clignottement
// tabPageIndex -> indice du TabPage à faire clignoter
private void StartTabPageClipping( int tabPageIndex )
{
_tabPageIndex = tabPageIndex;
_tabPageClippingTimer.Start();
}

// Met fin au clignottement
private void StopTabPageClipping()
{
_isClipping = false;
_tabPageClippingTimer.Stop();
tabControl.Invalidate( true );
}

// Le tabPage doit clignoter
private void TabPageClipping( object sender, EventArgs e )
{

// Le TabPage est allumé
if( _isClipping )
{

// Eteind le TabPage
_isClipping = false;
tabControl.Invalidate( true );
}

else
{

// Allume le TabPage
_isClipping = true;
tabControl.Invalidate( true );
}
}

// Un TabPage doit être redessiné
private void DrawTabControlItem( object sender, System.Windows.Forms.DrawItemEventArgs e )
{

// Pinceau du fond du texte
Brush backBrush;

// Pinceau du texte
Brush foreBrush;

// Il s'agit du TabPage à faire clignoté et le TabPage est allumé
if( _isClipping && _tabPageIndex == e.Index )
{
backBrush = new Pen( Color.Red ).Brush;
foreBrush = new Pen( Color.Yellow ).Brush;
}

else
{
backBrush = new Pen( SystemColors.Control ).Brush;
foreBrush = new Pen( Color.Black ).Brush;
}

// Dessine le fond du TabPage
e.Graphics.FillRectangle( backBrush, e.Bounds );

// Récupère le texte du TabPage à dessiner
string tabPageText = tabControl.TabPages[ e.Index ].Text;

// Récupère les dimensions du texte
SizeF stringSize = e.Graphics.MeasureString( tabPageText, tabControl.Font );

// Récupère l'image
Image tabPageImage = null;

if( tabControl.TabPages[ e.Index ].ImageIndex != -1 && tabControl.ImageList.Images.Count > tabControl.TabPages[ e.Index ].ImageIndex )
tabPageImage = tabControl.ImageList.Images[ tabControl.TabPages[ e.Index ].ImageIndex ];

// Calcul la position du texte
int stringLeft = (int)( e.Bounds.Left + ( e.Bounds.Width - ( tabPageImage != null ? tabPageImage.Width : 0 ) - stringSize.Width ) / 2 );
int stringTop = (int)( e.Bounds.Top + ( e.Bounds.Height - ( tabPageImage != null ? tabPageImage.Height : 0 ) - stringSize.Height ) / 2 );

// dessine le texte deux pixel plus bas s'il n'est pas sélectionné
if( tabControl.SelectedIndex != e.Index )
stringTop += 2;


// Dessine l'image
if( tabControl.TabPages[ e.Index ].ImageIndex != -1 && tabControl.ImageList.Images.Count > tabControl.TabPages[ e.Index ].ImageIndex )
e.Graphics.DrawImage( tabPageImage, e.Bounds.Left, e.Bounds.Top );

// Dessine le texte
e.Graphics.DrawString( tabPageText, tabControl.Font, foreBrush, stringLeft, stringTop );
}

Sauf que chez moi, l'image list est vide, alors que j'y ait mis 3 images ?!?
Dis-moi si c'est OK !!!

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de LUDINSKI
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
2
0
Merci
merci de ton aide et pour le clignotement tu sais pas si y'a pas moyen avec ondraw ?
Commenter la réponse de cs_emmanuel9
Messages postés
24
Date d'inscription
jeudi 10 juin 2004
Dernière intervention
10 août 2007
1
0
Merci
Tu veux un clignotement.. mais... quand un onglet est séléctionné? qu'il clignote?

OxN
Commenter la réponse de cs_OxN
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
2
0
Merci
En faite faut que je puisse décider quand ça commence à clignoter sur
l'onglet que j'ai choisi et quand l'utilisateur clique sur l'onglet qui
clignote le clignotement s'eteint un peut comme avec msn.
Commenter la réponse de cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
2
0
Merci
merci bcp !
Commenter la réponse de cs_emmanuel9

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.