Underline

fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 - 18 oct. 2004 à 11:11
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 30 déc. 2004 à 11:56
Bonjour,

J'ai un champ du type "Label" sur une Windows.Forms. Je souhaiterais mettre le Text du Label en souligné qui si la souris est sur le text et pas dès qu'elle entre dans le control "Label".

Remarque: VariableLabel.Font.Underline est en lecture seul.

Merci
A voir également:

13 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 oct. 2004 à 13:59
pour changer le style de la police :
label.Font = new Font(label.Font, FontStyle.Underline);


Cocoricoooooooo !!!!
coq
MVP Visual C#
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
18 oct. 2004 à 14:09
Merci Coq pour ta reponse sur le fait que VariableLabel.Font.Underline est en lecture seul.

Mais au sujet de la premiere partie tu as une solution??
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 oct. 2004 à 15:24
ajoute un nouveau CustomControl à ton projet et fait le heriter de Label

ensuite met ça dedans :
private Point m_curPos = Point.Empty;

protected override void OnPaint(PaintEventArgs pe)
{
// StringFormat définissant toute la chaine comme etant à mesurer
StringFormat strFormat = new StringFormat();
strFormat.SetMeasurableCharacterRanges(new CharacterRange[]{new CharacterRange(0, this.Text.Length)});

// récupération du Region de notre chaine
Region textRegion = pe.Graphics.MeasureCharacterRanges(this.Text, this.Font, this.ClientRectangle, strFormat)[0];

// si le curseur est dans le controle et qu'il se trouve sur notre texte
if ( m_curPos != Point.Empty 
&& textRegion.GetRegionScans(pe.Graphics.Transform)[0].Contains(m_curPos) )
{
this.Font = new Font(this.Font, this.Font.Style | FontStyle.Underline);
}
else
{
this.Font = new Font(this.Font, this.Font.Style & ~FontStyle.Underline);
}

// Appel à la classe de base OnPaint
base.OnPaint(pe);
}

protected override void OnMouseMove(MouseEventArgs e)
{
// enregistrement des coordonnées
m_curPos.X = e.X;
m_curPos.Y = e.Y;

base.OnMouseMove (e);

// demande d'actualisation de l'affichage
this.Invalidate();
}

protected override void OnMouseLeave(EventArgs e)
{
// RAZ des coordonnées
m_curPos = Point.Empty;

base.OnMouseLeave (e);

// demande d'actualisation de l'affichage
this.Invalidate();
}


plus qu'a rajouter de la gestion d'erreur et à tester plus en profondeur :)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 oct. 2004 à 15:53
a noter : tel quel ça ne fonctionne correctement qu'en TextAlign = TopLeft et si le texte tiens sur une seule ligne :-p

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
18 oct. 2004 à 17:36
Avant tout merci

Je prend le code et le verifie demain

A+
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
19 oct. 2004 à 11:13
Bonjour Cop

J'ai eu du mal a comprendre ton code :blush) et donc j'ai fais celui ci dessous. J'ai utilisé ta remarque sur le new Font.

A+

private void MouseEnter(object sender, EventArgs e)
{
labInTache2.Font = new Font(labInTache2.Font, labInTache2.Font.Style | FontStyle.Underline);
}

private void MouseLeave(object sender, EventArgs e)
{
labInTache2.Font = new Font(labFictif.Font, FontStyle.Bold);
}
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 oct. 2004 à 12:25
en fait :
this.Font = new Font(this.Font, this.Font.Style | FontStyle.Underline);

ajout du style Underline aux styles existants

this.Font = new Font(this.Font, this.Font.Style & ~FontStyle.Underline);

retrait du style Underline des styles existant

mais bon si tu es sur que ton style "non activé" sera tjs Bold pkoi pas :)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
20 oct. 2004 à 11:56
Bonjour Cop

Dans ton code (qui m'est encore difficile a comprendre) tu soulève un point intéressant que je n'arrive pas a extirpé. C'est qu'elle est la taille d'une chaîne de caractère connaissant la Font.?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 oct. 2004 à 12:08
utilise Graphics.MeasureString

PS : y'a un comique qui a inverser les touches q et p de ton clavier ^^

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
20 oct. 2004 à 12:50
Super

A=
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
30 déc. 2004 à 00:36
test (mes excuses)

C # for one day, C # forever
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
30 déc. 2004 à 00:49
re-test

C# for one day, C# forever :)
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
30 déc. 2004 à 11:56
ces charp !

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever :)
0
Rejoignez-nous