Comment mettre le texte d'un onglet TabControl en gras ? [Résolu]

cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 11 févr. 2007 à 17:13 - Dernière réponse : Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention
- 14 févr. 2007 à 21:31
Bonjour,
Je n'arrive pas à mettre le texte d'un onglet en gras J'ai essayé :
TabControl1.TabPages(0).Font =

New Font(TabControl1.TabPages(0).Font, FontStyle.Bold)

Tout les textes qui sont sur l'onglet sauf le texte de l'onglet sont en gras !
Comment je dois faire pour faire le contraire?
Merci  de votre aide.
Afficher la suite 

Votre réponse

24 réponses

Meilleure réponse
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 14 févr. 2007 à 19:48
3
Merci
Extrait de ton code, à remplacer :

[...]



  'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
  'Elle peut être modifiée en utilisant le Concepteur Windows Form.
  'Ne la modifiez pas en utilisant l'éditeur de code.
  Friend WithEvents TabControl1 As TabControlPerso
  Friend WithEvents TabPage1 As System.Windows.Forms.TabPage
  Friend WithEvents TabPage2 As System.Windows.Forms.TabPage
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.TabControl1 = New TabControlPerso()
Me.TabPage1 = New System.Windows.Forms.TabPage
Me.TabPage2 = New System.Windows.Forms.TabPage
Me.TabControl1.SuspendLayout()
Me.SuspendLayout()
'
'TabControl1



[...]






Voilà, on va y arriver.
Et il est dans la boîte a outils.






__________
Kenji

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de Charles Racaud
Meilleure réponse
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 14 févr. 2007 à 21:11
3
Merci
Bonsoir et merci.Merci de m'avoir aidé et merci pour la grande patience que tu a eu avec moi !
Je vais remettre le code en  entier.
Deux lignes à remplacer (lignes soulignées):
'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form

'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
'Friend WithEvents TabControl1 As System.Windows.Forms.TabControl   par
Friend
WithEvents TabControl1
As TabControlPerso

<System.Diagnostics.DebuggerStepThrough()>
Private
Sub InitializeComponent()

'Me.TabControl1 = New System.Windows.Forms.TabControlpar
Me.TabControl1 =
New TabControlPerso()
Ajouter le code suivant :

Public

Class TabControlPerso

Inherits System.Windows.Forms.TabControl

Public
Sub
New()

MyBase.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed

End
Sub
Protected
Overrides
Sub OnDrawItem(
ByVal e
As System.Windows.Forms.DrawItemEventArgs)

Dim TxtAttr
As
New System.Drawing.StringFormat
TxtAttr.LineAlignment = System.Drawing.StringAlignment.Center
TxtAttr.Alignment = System.Drawing.StringAlignment.Center

Dim FontStyle
As System.Drawing.FontStyle = System.Drawing.FontStyle.Regular

If
CBool(e.State
And System.Windows.Forms.DrawItemState.Selected)
Then FontStyle = System.Drawing.FontStyle.Bold
e.Graphics.DrawString(
MyBase.TabPages(e.Index).Text,
New System.Drawing.Font(e.Font, FontStyle), System.Drawing.Brushes.Black,
New System.Drawing.RectangleF(
CSng(e.Bounds.Left),
CSng(e.Bounds.Top),
CSng(e.Bounds.Width),
CSng(e.Bounds.Height)), TxtAttr)

MyBase.OnDrawItem(e)

End
Sub
Private
Sub TabControlPerso_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Click
MsgBox("Merci pour le code Kenji.")

End
Sub
Protected
Overrides
Sub Finalize()

MyBase.Finalize()

End
Sub
End
Class
Encore Merci et bonne soirée ça fonctionne vraiment bien merci Kenji.

Merci cs_Sipat 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 11 févr. 2007 à 17:23
0
Merci
Salut,

Il faut que tu reprenne le TabControl.
Tu fais un control qui hérite du TabControl, et du redéfinis le DrawMode pour dessiner toi même les onglets.





__________
Kenji
Commenter la réponse de Charles Racaud
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 11 févr. 2007 à 18:25
0
Merci
Bonsoir,
Tu peux me faire un petit exemple je suis débutant et je vois pas ce que tu veux dire !


Merci.
Commenter la réponse de cs_Sipat
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 11 févr. 2007 à 18:45
0
Merci
Bonsoir,
J'ai essayé de poser un GroupBox1 et de mettre dessus un TabControl1 effectivement le titre passe en gras, mais de tous les onglets .
J'aimerai avoir l'onglet qui a le Focus en gras mais pas les autres !

Tu crois que c'est possible ?
Merci.
Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 11 févr. 2007 à 18:52
0
Merci
Ce code met tout en gras, à toi de mettre en gras ceux qui doivent l'être et de ne pas mettre en gras les autres.





Public Class TabControlPerso
  Inherits System.Windows.Forms.TabControl

  Public Sub New()
    MyBase.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed
  End Sub

  Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)
    Dim TxtAttr As New System.Drawing.StringFormat()
    TxtAttr.LineAlignment = System.Drawing.StringAlignment.Center
    TxtAttr.Alignment = System.Drawing.StringAlignment.Center

    e.Graphics.DrawString(MyBase.TabPages(e.Index).Text, New System.Drawing.Font(e.Font, _
     System.Drawing.FontStyle.Bold), New System.Drawing.SolidBrush(e.ForeColor), _
     e.Bounds, TxtAttr)

    MyBase.OnDrawItem(e)
  End Sub

End Class,

----

(Coloration syntaxique automatique par Kenji)





__________
Kenji
Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 11 févr. 2007 à 18:56
0
Merci
Si c'est que l'onglet séléctionner,

Il suffit de rajouter et de modifier

Dim FontStyle As System.Drawing.FontStyle = System.Drawing.FontStyle.Regular
If CBool(e.State And System.Windows.Forms.DrawItemState.Selected) Then FontStyle = System.Drawing.FontStyle.Bold



e.Graphics.DrawString(MyBase.TabPages(e.Index).Text, New System.Drawing.Font(e.Font, _
  FontStyle), System.Drawing.Brushes.Black, e.Bounds, TxtAttr)





__________
Kenji
Commenter la réponse de Charles Racaud
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 11 févr. 2007 à 20:10
0
Merci
Bonsoir,
je viens d'essayer mais il y a une erreur avec VB.NET 2003
e.Graphics.DrawString(

MyBase.TabPages(e.Index).Text,
New System.Drawing.Font(e.Font, System.Drawing.FontStyle.Bold),
New System.Drawing.SolidBrush(e.ForeColor), e.Bounds, TxtAttr)
une valeur de type "System drawing... ne peut être convertie en...

Merci.
Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 11 févr. 2007 à 21:51
0
Merci
"
une valeur de type "System drawing... ne peut être convertie en..."


Si tu me mettais l'erreur en entier. C'est ici le plus important que tu as remplacer par des "..."






__________
Kenji
Commenter la réponse de Charles Racaud
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 12 févr. 2007 à 09:47
0
Merci
Bonjour,
Voilà l'erreur :
C:\Doc\AT\Visual Studio\WindowsApp\Form1.vb(263): La résolution de surcharge a échoué, car aucun 'DrawString' accessible ne peut être appelé avec ces arguments :
    'Public Sub DrawString(s As String, font As System.Drawing.Font, brush As System.Drawing.Brush, layoutRectangle As System.Drawing.RectangleF, format As System.Drawing.StringFormat)' : Une valeur de type 'System.Drawing.Rectangle' ne peut pas être convertie en 'System.Drawing.RectangleF'.
    'Public Sub DrawString(s As String, font As System.Drawing.Font, brush As System.Drawing.Brush, point As System.Drawing.PointF, format As System.Drawing.StringFormat)' : Une valeur de type 'System.Drawing.Rectangle' ne peut pas être convertie en 'System.Drawing.PointF'.
    'Public Sub DrawString(s As String, font As System.Drawing.Font, brush As System.Drawing.Brush, x As Single, y As Single)' : Une valeur de type 'System.Drawing.Rectangle' ne peut pas être convertie en 'Single'.
    'Public Sub DrawString(s As String, font As System.Drawing.Font, brush As System.Drawing.Brush, x As Single, y As Single)' : Une valeur de type 'System.Drawing.StringFormat' ne peut pas être convertie en 'Single'.


Dans VB6 les onglets sont en gras et celui qui est sélectionné est normale.Je ne comprends pas pourquoi c'est différent en VB.NET.2003.

Merci pour ton aide.
Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 12 févr. 2007 à 10:14
0
Merci
Essaye de faire un cast :

CType(e.Bounds, System.Drawing.RectangleF)









__________
Kenji
Commenter la réponse de Charles Racaud
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 12 févr. 2007 à 10:47
0
Merci
Bonjour,
J'ai remplacé :
e.Bounds par:

CType(e.Bounds, System.Drawing.RectangleF)

Erreur:

vb(264): Une valeur de type 'System.Drawing.Rectangle' ne peut pas être convertie en 'System.Drawing.RectangleF'.

Il y a que deux erreurs maintenant c'est e.Bounds qui est souligné en bleu et non pas toute la ligne.
P.S je vais devoir m'absenter je reviendrais vers 21 h.
Merci.
Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 12 févr. 2007 à 10:52
0
Merci
Bon ben remplace par
New System.Drawing.RectangleF(CSng(e.Bounds.Left), CSng(e.Bounds.Top), CSng(e.Bounds.Width), CSng(e.Bounds.Height))






__________
Kenji
Commenter la réponse de Charles Racaud
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 12 févr. 2007 à 22:15
0
Merci
Bonsoir,
J'ai remplacé comme cela :

If

e.Graphics.DrawString(
MyBase.TabPages(e.Index).Text,
New System.Drawing.Font(e.Font, System.Drawing.FontStyle.Bold),
New System.Drawing.SolidBrush(e.ForeColor),
New System.Drawing.RectangleF(
CSng(e.Bounds.Left),
CSng(e.Bounds.Top),
CSng(e.Bounds.Width),
CSng(e.Bounds.Height)), TxtAttr)
Then e.Graphics.DrawString(
MyBase.TabPages(e.Index).Text,
New System.Drawing.Font(e.Font, System.Drawing.FontStyle.Bold),
New System.Drawing.SolidBrush(e.ForeColor),
New System.Drawing.RectangleF(
CSng(e.Bounds.Left),
CSng(e.Bounds.Top),
CSng(e.Bounds.Width),
CSng(e.Bounds.Height)), TxtAttr)

Erreur: qui s'arrête à
Then : et aprés c'est bon.

vb(267): Cette expression ne produit pas de valeur.
Merci bonne soirée.
Commenter la réponse de cs_Sipat
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 13 févr. 2007 à 11:01
0
Merci
Bonjour,
Je viens de faire un petit récapitulatif je n'ai pas d'erreur, mais comment je determine que je veux le texte de mon onglet en gras quand je clic dessus?

Public
Class TabControlPerso

Inherits System.Windows.Forms.TabControl

Public
Sub
New()

MyBase.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed

End
Sub
Protected
Overrides
Sub OnDrawItem(
ByVal e
As System.Windows.Forms.DrawItemEventArgs)

Dim TxtAttr
As
New System.Drawing.StringFormat
TxtAttr.LineAlignment = System.Drawing.StringAlignment.Center
TxtAttr.Alignment = System.Drawing.StringAlignment.Center

Dim FontStyle
As System.Drawing.FontStyle = System.Drawing.FontStyle.Regular

If
CBool(e.State
And System.Windows.Forms.DrawItemState.Selected)
Then FontStyle = System.Drawing.FontStyle.Bold

e.Graphics.DrawString(
MyBase.TabPages(e.Index).Text,
New System.Drawing.Font(e.Font, FontStyle), System.Drawing.Brushes.Black,
New System.Drawing.RectangleF(
CSng(e.Bounds.Left),
CSng(e.Bounds.Top),
CSng(e.Bounds.Width),
CSng(e.Bounds.Height)), TxtAttr)

MyBase.OnDrawItem(e)

End
Sub
End
Class
Merci.
Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 13 févr. 2007 à 18:40
0
Merci
Désolé, ma connexion est naze en ce moment.

Ben la il affiche en gras pour l'onget séléctionner. C'est pas ce que tu voulais ?
Sinon tu ajoute une propriété pour définirs quels sont les onglets à mettre en gras








__________
Kenji
Commenter la réponse de Charles Racaud
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 13 févr. 2007 à 19:20
0
Merci
Bonsoir,
Oui il affiche en gras quand je selectionne TabControl1 et je selectionne gras tous ce qui se trouve sur le control tab et gras même les onglets et je déselectionne un par un les gras que je ne veux pas.
Mais les onglets sont tous gras aussi et la je ne vois pas comment j'enleve le gras !
 Parce que j'aimerai que l'onglet perde sont gras quand il a le focus ,mais que le grass des autres onglets garde le leurs .
Tu crois que c'est possible?
Merci pour ta réponse.
Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 13 févr. 2007 à 19:39
0
Merci
As-tu remplacer ton TabControl par le TabControlPerso ?






__________
Kenji
Commenter la réponse de Charles Racaud
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 13 févr. 2007 à 20:29
0
Merci
Ben ...non je viens de renommer TabControl1 en  TabControlPerso erreur :

vb(38): 'TabControlPerso' est un type dans 'WindowsApplication3.Form1' et ne peut pas être utilisé en tant qu'expression.

vb(43): Une référence à un membre non partagé requiert une référence d'objet.

vb(106): 'TabControlPerso' est déjà déclaré en tant que 'Friend Dim WithEvents TabControlPerso As System.Windows.Forms.TabControl' dans ce class.

Bon je suppose que ce n'est pas ce qu'il fallait faire !
Commenter la réponse de cs_Sipat
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 13 févr. 2007 à 23:27
0
Merci
Il faut que tu supprime ton tabcontrol actuel et que tu place le nouveau (Un TabControlPerso doit apparaitre dans la liste)






__________
Kenji
Commenter la réponse de Charles Racaud

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.

Comment mettre le texte d'un onglet TabControl en gras ? - page 2