Hello,

Afin d'obtenir un TabControl doté d'onglets sur la gauche avec un texte horizontal, j'ai dû intervenir sur l'événement DrawItem de TabControl comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
    Private Sub TabControl_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl.DrawItem
 
        ' Récupère la couleur d'avant-plan pour la "face" des boutons 3D, ainsi que le rectangle définissant
        ' la surface du contrôle, puis peint le contrôle
        e.Graphics.FillRectangle(SystemBrushes.Control, e.Bounds)
 
        'Crée une classe décrivant le formatage de chaînes de texte
        Dim sf As New StringFormat(StringFormatFlags.NoWrap)
 
        'Définit le positionnement vertical des chaînes de texte (ici, centré)
        sf.Alignment = StringAlignment.Center
 
        'Définit le positionnement horizontal des chaînes de texte (ici, centré)
        sf.LineAlignment = StringAlignment.Center
 
        'Ecrit sur l'onglet "repeint" la chaîne de texte qui avait été définie pour ledit onglet
        'Paramètre 1 : Texte  assigné  à l'onglet qui est en train d'être dessiné
        'Paramètre 2 : Police assignée à l'onglet qui est en train d'être dessiné
        'Paramètre 3 : Rectangle de l'onglet défini par une structure de 4 flottants
        'Paramètre 4 : Formatage désiré
        e.Graphics.DrawString(TabControl.TabPages(e.Index).Text, e.Font, _
                              SystemBrushes.ControlText, RectangleF.op_Implicit(e.Bounds), sf)
 
    End Sub
Mais cela présente en l'occurence quelques problèmes :

- en définissant la propriété DrawMode du TabControl sur OwnerDrawFixed, je pers le "look" des IHM XP, pour revenir à celui de 2000; j'ai trouvé un code qui résoud le problème, mais uniquement pour un TabControl standard, et pour .Net 1.x, semble-t-il

- dimensionnant la taille des onglets à ma guise (afin que leur hauteur cumulée soit égale à celle du TabControl), je voudrais bien également augementer la taille des bordures 3D, car elle me semble à présent ridicule vis-à-vis des énormes onglets tout carrés. A défaut, j'aimerais me débarasser complètement des onglets

- je n'arrive pas, avec mes onglets, à remplir toute la hauteur du TabControl. Avant que je n'ai pu atteindre la hauteur totale, Visual me commence une seconde colonne d'onglets

Merci pour votre aide.