Bonjour,

Je souhaite pouvoir afficher dans un datagridview des headers qui puissent se spliter sur plusieurs colonnes :

| Jan | Feb | Mar |
|S1|S2|S1|S2 |S1|S2 |

J'ai trouvé cette méthode :

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        With DataGridView1
            .Columns.Add("JanWin", "Win")
            .Columns.Add("JanLoss", "Loss")
            .Columns.Add("FebWin", "Win")
            .Columns.Add("FebLoss", "Loss")
            .Columns.Add("MarWin", "Win")
            .Columns.Add("MarLoss", "Loss")
            .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
            .ColumnHeadersHeight = DataGridView1.ColumnHeadersHeight * 2
        End With
    End Sub
 
    Private Sub DataGridView1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGridView1.Paint
 
        Dim Monthes() As String = {"Jan", "Feb", "Mar"}
        For A As Int32 = 0 To 5
 
            Dim Rect As Rectangle = DataGridView1.GetCellDisplayRectangle(A, -1, True)
 
            Rect.X += 1
            Rect.Y += 1
 
            Rect.Width = Rect.Width * 2 - 2
 
            Rect.Height = Rect.Height / 2 - 2
 
            e.Graphics.FillRectangle(New SolidBrush(DataGridView1.ColumnHeadersDefaultCellStyle.BackColor), Rect)
 
            Dim Format As New StringFormat()
            Format.Alignment = StringAlignment.Center
            Format.LineAlignment = StringAlignment.Center
 
            e.Graphics.DrawString(Monthes(A / 2), DataGridView1.ColumnHeadersDefaultCellStyle.Font, _
            New SolidBrush(DataGridView1.ColumnHeadersDefaultCellStyle.ForeColor), Rect, Format)
 
            A += 1
        Next
 
    End Sub
Cela fonctionne, le problème vient du repaint lors du scroll horizontal... les rectangles créés sont hachés.

Comment faire pour éviter cela ?
Cette méthode pour splitter artificiellement est-elle la bonne ?

Merci de vos réponses.
Alexandre