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

Résolu
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007 - 11 févr. 2007 à 17:13
 Utilisateur anonyme - 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.

24 réponses

Utilisateur anonyme
14 févr. 2007 à 19:48
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
3
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
14 févr. 2007 à 21:11
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.
3
Utilisateur anonyme
11 févr. 2007 à 17:23
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
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
11 févr. 2007 à 18:25
Bonsoir,
Tu peux me faire un petit exemple je suis débutant et je vois pas ce que tu veux dire !


Merci.
0

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

Posez votre question
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
11 févr. 2007 à 18:45
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.
0
Utilisateur anonyme
11 févr. 2007 à 18:52
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
0
Utilisateur anonyme
11 févr. 2007 à 18:56
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
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
11 févr. 2007 à 20:10
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.
0
Utilisateur anonyme
11 févr. 2007 à 21:51
"
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
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
12 févr. 2007 à 09:47
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.
0
Utilisateur anonyme
12 févr. 2007 à 10:14
Essaye de faire un cast :

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









__________
Kenji
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
12 févr. 2007 à 10:47
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.
0
Utilisateur anonyme
12 févr. 2007 à 10:52
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
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
12 févr. 2007 à 22:15
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.
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
13 févr. 2007 à 11:01
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.
0
Utilisateur anonyme
13 févr. 2007 à 18:40
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
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
13 févr. 2007 à 19:20
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.
0
Utilisateur anonyme
13 févr. 2007 à 19:39
As-tu remplacer ton TabControl par le TabControlPerso ?






__________
Kenji
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
13 févr. 2007 à 20:29
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 !
0
Utilisateur anonyme
13 févr. 2007 à 23:27
Il faut que tu supprime ton tabcontrol actuel et que tu place le nouveau (Un TabControlPerso doit apparaitre dans la liste)






__________
Kenji
0
Rejoignez-nous