159 votes

Comment gérer l'événement de clic dans la colonne des boutons dans Datagridview ?

Je développe une application Windows en utilisant C#. J'utilise DataGridView pour afficher les données. J'y ai ajouté une colonne de boutons. J'aimerais savoir comment gérer l'événement de clic sur ce bouton en DataGridView .

1 votes

Ajoutez-vous le bouton de façon programmatique (ce qui, je le soupçonne, est la seule façon) ?

0 votes

Il existe de nombreuses réponses à cette question en ligne. Qu'est-ce qui vous pose problème en particulier ?

1 votes

@Joshua J'ai trouvé de nombreuses réponses sur le net mais je n'ai pas vraiment eu d'idée sur ce qu'il faut faire et quand commencer. J'ai ajouté un bouton dans mon datagridview mais je ne sais pas comment gérer son événement de clic.

0voto

JL Dajoyag Points 35

Vous pouvez essayer celui-ci, vous ne vous soucierez pas beaucoup de l'ordre des colonnes.

private void TheGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (TheGrid.Columns[e.ColumnIndex].HeaderText == "Edit")
    {
        // to do: edit actions here
        MessageBox.Show("Edit");
    }
}

0voto

Par exemple pour l'événement ClickCell dans Windows Forms.

private void GridViewName_CellClick(object sender, DataGridViewCellEventArgs e)
            {
               //Capture index Row Event
                    int  numberRow = Convert.ToInt32(e.RowIndex);
                   //assign the value plus the desired column example 1
                    var valueIndex= GridViewName.Rows[numberRow ].Cells[1].Value;
                    MessageBox.Show("ID: " +valueIndex);
                }

Salutations :)

0voto

clairestreb Points 126

Si quelqu'un utilise C# (ou voir la note sur VB.NET ci-dessous) et a atteint ce point, mais est toujours bloqué, veuillez lire la suite.

La réponse de Joshua m'a aidé, mais pas jusqu'au bout. Vous remarquerez que Pierre a demandé "Où trouverais-tu le bouton ?", mais il n'a pas obtenu de réponse.

La seule façon dont cela a fonctionné pour moi était de faire l'une des choses suivantes pour ajouter mon gestionnaire d'événements (après avoir défini la source de données de mon DataGridView sur ma DataTable et après avoir ajouté la DataGridViewButtonColumn au DataGridView) :

Soit :

dataGridView1.CellClick += new DataGridViewCellEventHandler(dataGridView1_CellClick);

ou :

dataGridView1.CellContentClick += new DataGridViewCellEventHandler(dataGridView1_CellContentClick);

Puis ajoutez la méthode du gestionnaire (soit dataGridView1_CellClick, soit dataGridView1_CellContentClick) indiquée dans les différentes réponses ci-dessus.

Remarque : VB.NET est différent de C# à cet égard, car nous pouvons simplement ajouter une clause Handles à la signature de notre méthode ou émettre une instruction AddHandler comme décrit dans la doc Microsoft " Comment faire : Appeler un gestionnaire d'événements en Visual Basic "

0voto

auto9817 Points 113

Vous allez ajouter une colonne de boutons comme ceci dans votre dataGridView

        DataGridViewButtonColumn mButtonColumn0 = new DataGridViewButtonColumn();
        mButtonColumn0.Name = "ColumnA";
        mButtonColumn0.Text = "ColumnA";

        if (dataGridView.Columns["ColumnA"] == null)
        {
            dataGridView.Columns.Insert(2, mButtonColumn0);
        }

Vous pouvez ensuite ajouter des actions dans l'événement de clic de cellule. J'ai trouvé que c'était la façon la plus simple de le faire.

    private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
    {

        int rowIndex = e.RowIndex;
        int columnIndex = e.ColumnIndex;

        if (dataGridView.Rows[rowIndex].Cells[columnIndex].Selected == true && dataGridView.Columns[columnIndex].Name == "ColumnA")
         {
               //.... do any thing here.
         }

    }

J'ai trouvé que l'événement Cell Click est automatiquement souscrit souvent. Je n'ai donc pas eu besoin du code ci-dessous. Cependant, si votre événement de clic de cellule n'est pas souscrit, alors ajoutez cette ligne de code pour votre dataGridView.

     this.dataGridView.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellClick);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X