Tabcontrol + Questions [Résolu]

cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 21 juil. 2005 à 10:09 - Dernière réponse : cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention
- 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
cs_OxN 24 Messages postés jeudi 10 juin 2004Date d'inscription 10 août 2007 Dernière intervention - 21 juil. 2005 à 15:26
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

Merci cs_OxN 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_OxN
Meilleure réponse
LUDINSKI 441 Messages postés mardi 2 décembre 2003Date d'inscription 22 mai 2012 Dernière intervention - 21 juil. 2005 à 17:34
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 !!!

Merci LUDINSKI 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de LUDINSKI
cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 21 juil. 2005 à 15:42
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
cs_OxN 24 Messages postés jeudi 10 juin 2004Date d'inscription 10 août 2007 Dernière intervention - 21 juil. 2005 à 15:48
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
cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 21 juil. 2005 à 15:51
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
cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 21 juil. 2005 à 17:36
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.