IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

DATAGRIDVIEW COLONNE BOUTTON IMAGE


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut DATAGRIDVIEW COLONNE BOUTTON IMAGE
    Bonjour,

    Je souhaiterais avoir une colonne dans un datagridview de type datagridviewbutoncoulmn et ajouter une image sur chaque bouton de chaque ligne.

    J'ai vu sur le net cette question posée plusieurs fois. J'ai vu également qu'il fallait apparement passer par l'événement "CellFormating".

    J'aimerais s'il vous p laît avoir une méthode très simple.

    Merci à tous.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    Salut,

    Ce que tu cherches est à priori pas mal documenté donc tu devrait pouvoir trouver facilement.

    Quel problème particulier rencontres tu ?

    Voici malgré tout un petit bout de code ....

    à Insérer à l'endroit ou tu créé ou initialise ton DateGridView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DataGridViewButtonColumn colonneBouton = new DataGridViewButtonColumn();
    colonneBouton.Width = 200;
    colonneBouton.FlatStyle = FlatStyle.Flat;
    colonneBouton.HeaderText = "Button";
    colonneBouton.Name = "Button";
    colonneBouton.UseColumnTextForButtonValue = true;
    colonneBouton.Text = "New";
    maGrid.Columns.Insert(maGrid.Columns.Count, colonneBouton);
    Puis l'évènement CellPainting :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for (int cpt = 0; cpt < maGrid.Rows.Count; cpt++)
    {
    <div style="margin-left:40px">try
    {
    <div style="margin-left:40px">Button lBouton = new Button();
    lBouton.Text = "texte du bouton";
    maGrid.Rows[cpt].Cells[maGrid.Columns.Count].Value = lBouton;</div>
    }
    catch
    { }</div>}
    Puis après si tu veut exécuter quelque chose lors du clic sur ton bouton, il y a l'évènement CellContentClick dans lequel tu peut faire un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (e.ColumnIndex == maGrid.Columns.Count-1)
                {
                    //MessageBox.Show(string.Format("clic sur le bouton pour  {0}",maGrid.Rows[e.RowIndex].Cells[2].Value.ToString()));
                }
    Après il y a peut d'être d'autres solutions .... mais celle ci fonctionne.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Bonjour et merci pour ta réponse.

    J'arrive à afficher un boutton dans ma colonne mais le boutton n'as pas d'image et c'est ce que je souhaite faire.

    D'ailleurs la colonne contenant les boutons est ajouté via le designer.

    Donc quelle est la meilleure solution pour que ce boutton ait une image?

    Merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    ben à bas le designer ....

    Si tu suis la méthode que je te propose, il suffit juste de définir dans le CellPainting l'image que tu veut associer à ton bouton et le tour est joué ....

    Je ne vois pas ou tu bloques....as tu u code à montrer ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Alors pour récapituler :

    - via le designer je créer une colonne de type datagridviewcolumnbuton.
    -Ensuite dans mon code je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private Button BtnSupp = new Button();
    BtnSupp.Text = "";
    BtnSupp.Image = Resources.delete;
    BtnSupp.Size = new System.Drawing.Size(22, 22);
    et ensuite lorsque je veux ajouter une ligne dans mon datagrid je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mondatagrid.Rows.Add(BtnSupp, "", "");
    3 champs car le datagrid possède 3 colonnes.

    ps: je rapelle que le boutton s'affiche mais sans l'image. il y a marqué à la place "system.Windows.forms.buton"

    Merci pour ton aide.

  6. #6
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Tu change ajouter la propriété backgroundimage a la de DataGridViewButtonColumn
    Ou tu peux voir cet exemple

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Bonjour,

    Je ne toruve pas de propriété backgroundimage...

    Concernant le lien ce n'est pas tout à fait ce que je recherche.
    Car la colonne avec le boutton est ajouté sans image.

    Je vais continuer mes recherches.

  8. #8
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Tu doit changer le propriété ColumnType en DataGridViewImageColumn
    puis tu change le prop Image
    voire ici
    Images attachées Images attachées  

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Merci mais c'est un boutton avec une image que je veux pas une image seule.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    Citation Envoyé par Ismael94000 Voir le message
    Bonjour,

    Je ne toruve pas de propriété backgroundimage...

    Concernant le lien ce n'est pas tout à fait ce que je recherche.
    Car la colonne avec le boutton est ajouté sans image.

    Je vais continuer mes recherches.
    Sur tes Button il y a une propriété Image qu'il te faut utiliser (ou alors tu utilises l'ImageList et ImageKey ou ImageIndice).

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Je le sais mais nsi tu regardes plus haut dans mon code j'explique que ça ne ma'rche pas.

    Visiblement il faut "dessiner" l'image dans l'événement cellpainting d'après mes recherches sur le web.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Oui mais trop compliqué pour moi.

    Si ça n'existe pas en natif, je vais essayer de réfléchir à un autre graphisme.

    Merci.

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Bonjour,

    Si quelqu'un peut m'aider à trouver une solution très simple s'il vous plaît.

    Je résume mon besoin :

    Je souhaiterais alimenter un DataGridView avec un datagridviewcolumnbutton et 2 datagridviewcolumntextbox.
    La première colonne celle des bouttons, doit contenir des boutons avec image.

    En cherchant beaucoup de personnes parlent de "dessiner" le boutton dans l'évènement "CellPainting", mais d'une part je ne comprends pas forcèment le code et d'autre part le boutton apparait toujours sans image.

    Merci de votre aide.

  15. #15
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 44
    Par défaut
    Avec ce code j'y arrive.

    Maintenant il ne me reste plus qu'à centrer l'image...


    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
     private void dgv_pdd_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
            {
                if (e.RowIndex != -1 && e.ColumnIndex != -1)
                {
     
                    if (dgv_pdd.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewButtonCell)
                    {
                        Image img = Resources.delete;
                        e.Paint(e.CellBounds, DataGridViewPaintParts.All);
     
                        Rectangle rec = new Rectangle(e.CellBounds.Left + 3, e.CellBounds.Top + 3, e.CellBounds.Height - 3, e.CellBounds.Height - 5);
     
                        e.Graphics.DrawImage(img, rec);
                        e.Handled = true;
                    }
                }
            }

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/09/2007, 09h51
  2. [VB.NET] Datagridview + colonne
    Par olbi dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/10/2006, 10h37
  3. boutton image ?
    Par nawfal007 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 18/09/2006, 17h34
  4. Réponses: 3
    Dernier message: 16/05/2006, 14h47
  5. [C#][.Net2][DataGridView]Colonne perso
    Par vincent.e dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/01/2006, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo