Bonjour,

Alors dans mon programme, j'ai un DGV qui est lié à une dataTable via un BlindingSource classique (sans image). J'ai reussi à réaliser un filtre sans probleme jusqu'au moment ou j'ai une colonne de mon DGV qui est une colonne Image. J'ai trouvé une solution pour ajouter cette colonne image avec les images que je veux mais lorsque je me en marche mon filtre, mes images disparaissent car elles sont pas enregistrer dans ma DataTable.

Voila mon code qui m'ajoute mes images de manière classique :
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
    Private Sub frmDGV_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        RemplirDico()
        TableForDgv()
        AjouterColonneImage()
        AjouterImageDansDGV()
    End Sub
    Private Sub AjouterColonneImage()
        Dim ColImg As New DataGridViewImageColumn()
        DataGridView1.Columns.Insert(0, ColImg)
    End Sub
    Private Sub AjouterImageDansDGV()
        For i As Integer = 0 To DataGridView1.RowCount - 1
            If DataGridView1.Rows(i).Cells(3).EditedFormattedValue = "Auto" Then
                DataGridView1.Rows(i).Cells(0).Value = imgListPrio.Images(0)
            ElseIf DataGridView1.Rows(i).Cells(3).EditedFormattedValue = "Manu" Then
                DataGridView1.Rows(i).Cells(0).Value = imgListPrio.Images(1)
            ElseIf DataGridView1.Rows(i).Cells(3).EditedFormattedValue = "Erreur" Then
                DataGridView1.Rows(i).Cells(0).Value = imgListPrio.Images(2)
            End If
        Next
    End Sub
Je voudrai bien pouvoir mettre directement mes images dans ma DataTable et mon BlindingSource pour que mon filtre marche a 100%.

Voila le code de ma nouvelle approche :

Propriété Image dans ma classe Alarme dans mon module en plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
        Private msImg As Image
        Public Property Img() As Image
            Get
                Return msImg
            End Get
 
            Set(ByVal value As Image)
                msImg = value
            End Set
        End Property
Mon Dico est chargé avec les images :
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
Private Sub RemplirDico()
        Dim Alarme1 As New Alarme
        Alarme1.TimeDate = Now.DayOfYear
        Alarme1.TimeDate = Now.Hour
        Alarme1.Degre = "Auto"
        Alarme1.Evenement = "1"
        Alarme1.Img = imgListPrio.Images(0)
        DicoTest.Add(Alarme1.Evenement, Alarme1)
 
        Dim Alarme2 As New Alarme
        Alarme2.TimeDate = Now.DayOfYear
        Alarme2.TimeDate = Now.Hour
        Alarme2.Degre = "Auto"
        Alarme2.Evenement = "2"
        Alarme2.Img = imgListPrio.Images(0)
        DicoTest.Add(Alarme2.Evenement, Alarme2)
 
        Dim Alarme3 As New Alarme
        Alarme3.TimeDate = Now.DayOfYear
        Alarme3.TimeDate = Now.Hour
        Alarme3.Degre = "Manu"
        Alarme3.Evenement = "3"
        Alarme3.Img = imgListPrio.Images(1)
        DicoTest.Add(Alarme3.Evenement, Alarme3)
 
        Dim Alarme4 As New Alarme
        Alarme4.TimeDate = Now.DayOfYear
        Alarme4.TimeDate = Now.Hour
        Alarme4.Degre = "Manu"
        Alarme4.Evenement = "4"
        Alarme4.Img = imgListPrio.Images(1)
        DicoTest.Add(Alarme4.Evenement, Alarme4)
 
        Dim Alarme5 As New Alarme
        Alarme5.TimeDate = Now.DayOfYear
        Alarme5.TimeDate = Now.Hour
        Alarme5.Degre = "Erreur"
        Alarme5.Evenement = "5"
        Alarme5.Img = imgListPrio.Images(2)
        DicoTest.Add(Alarme5.Evenement, Alarme5)
    End Sub
Ma procédure qui permet de remplir de DataTable, BlindingSource et DGV :
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
    Private Sub TableForDgv()
        Dim ColImg As DataColumn = New DataColumn()
        ColImg.ColumnName = ""
        dtFromGrid.Columns.Add(ColImg)
        Dim ColDate As DataColumn = New DataColumn()
        ColDate.ColumnName = "Date"
        dtFromGrid.Columns.Add(ColDate)
        Dim ColHeure As DataColumn = New DataColumn()
        ColHeure.ColumnName = "Heure"
        dtFromGrid.Columns.Add(ColHeure)
        Dim ColDegre As DataColumn = New DataColumn()
        ColDegre.ColumnName = "Degre"
        dtFromGrid.Columns.Add(ColDegre)
        Dim ColEven As DataColumn = New DataColumn()
        ColEven.ColumnName = "Evenement"
        dtFromGrid.Columns.Add(ColEven)
 
        ' Permet d'ajouter les colonnes du DataTable dans les colonnes du DGV
        For Each col As DataGridViewColumn In DataGridView1.Columns
            dtFromGrid.Columns.Add(col.Name)
        Next
 
        For Each alar As Alarme In DicoTest.Values
            dtFromGrid.Rows.Add(alar.Img, alar.TimeDate, alar.TimeHeure, alar.Degre, alar.Evenement)
        Next
 
        bs.DataSource = dtFromGrid
 
        With DataGridView1
            .RowHeadersVisible = False
            .DataSource = bs
            .Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable
            .Columns(1).SortMode = DataGridViewColumnSortMode.NotSortable
            .Columns(2).SortMode = DataGridViewColumnSortMode.NotSortable
            .Columns(3).SortMode = DataGridViewColumnSortMode.NotSortable
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
        End With
 
    End Sub

Merci d'avance pour vos suggestions, et j’accepte aussi vos solutions car je trouve la mienne pas trop jolie a voir de loin !!