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
.
Réponses
Trop de publicités?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 :)
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 "
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);
- Réponses précédentes
- Plus de réponses
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.
0 votes
eggheadcafe.com/community/csharp/2/10093214/