none
Comment Afficher/Utiliser des Images dans un DataGridViewComboBoxCell RRS feed

  • Discussion générale

  • Bonjour,

    Afin de pouvoir afficher des étoiles dans un DataGridViewComboBoxCell, voici le code utiliser :

    Private Sub DGW_Historique_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DGW_Historique.CellPainting
            If e.ColumnIndex < 0 OrElse e.RowIndex < 0 Then Exit Sub
            Dim CelluleQualite As DataGridViewComboBoxCell = Nothing
    
            If e.ColumnIndex = Colonne_Qualite.Index Then
                CelluleQualite = DirectCast(DGW_Historique.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell)
                If IsNothing(CelluleQualite) OrElse String.IsNullOrWhiteSpace(CelluleQualite.Value.ToString) Then Exit Sub
                With e
                    .PaintBackground(e.ClipBounds, True)
                    .PaintContent(e.ClipBounds)
                    .Graphics.DrawImage(CType(e.Value, Image), New Rectangle(e.CellBounds.X, e.CellBounds.Y, 60, 20))
                End With
                e.Handled = True
            End If
        End Sub
    
     
    
        Private Sub DGW_Historique_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DGW_Historique.EditingControlShowing
            If TypeOf e.Control Is ComboBox Then
                If DGW_Historique.CurrentCell.ColumnIndex = Colonne_Qualite.Index Then
                    With DirectCast(e.Control, ComboBox)
                        .Size = New Size(60, 20)
                        .ItemHeight = 20
                        .DropDownHeight = 80
                        .DrawMode = DrawMode.OwnerDrawFixed
                        Try
                            RemoveHandler .DrawItem, AddressOf GridView_IconDropDown_DrawItem
                        Catch
                        End Try
    
                        AddHandler .DrawItem, AddressOf GridView_IconDropDown_DrawItem
                    End With
                End If
            End If
        End Sub
    
    
        Private Sub GridView_IconDropDown_DrawItem(sender As Object, e As DrawItemEventArgs)
            Dim CurrentGraphic As Graphics = e.Graphics
            Dim LeComboBox As ComboBox = CType(sender, ComboBox)
            If e.Index >= 0 AndAlso Not IsNothing(LeComboBox.Items(e.Index)) Then
                CurrentGraphic.DrawImage(CType(LeComboBox.Items(e.Index), Image), New Rectangle(e.Bounds.Left, e.Bounds.Top, 40, 40))
            End If
        End Sub
    Le code ci-dessous affiche les images. L'affichage n'est pas très propre, néanmoins le problème n'est pas là  Lorsque je sélectionne l'image depuis le DataGridViewComboBoxCell l'application ne réagi plus, cependant l'application ne plante pas pour autant.

    Je vous avoue que je suis un peu dans le brouillard. Je ne sais pas du tout quoi faire.

    Si quelqu'un à une idée, merci d'avance.
    dimanche 14 décembre 2014 20:55

Toutes les réponses

  • Bonjour,

    Obtenez-vous une erreur? Avez-vous essayé de lancer l'application en debug?

    Cordialement,

    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 15 décembre 2014 16:45
    Modérateur
  • Oui je lance bien l'application en debug et je n'ai aucune erreur hors mis le plantage de l'application.

    Boby15000

    lundi 15 décembre 2014 17:28