J'ai un datagridview dans mon application C # et l'utilisateur ne devrait pouvoir cliquer que sur des lignes complètes. Je règle donc le SelectionMode sur FullRowSelect.
Mais maintenant, je veux avoir un événement qui est déclenché lorsque l'utilisateur double-clique sur une ligne. Je veux avoir le numéro de ligne dans un MessageBox.
J'ai essayé ce qui suit:
this.roomDataGridView.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.roomDataGridView_CellCont entDoubleClick);
private void roomDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(e.RowIndex.ToString());
}
Malheureusement, rien ne se passe. Qu'est-ce que je fais mal?
Ne modifiez pas manuellement les fichiers .designer dans Visual Studio, ce qui entraîne généralement des maux de tête. Au lieu de cela, spécifiez-le dans la section des propriétés de votre DataGridRow qui devrait être contenu dans un élément DataGrid. Ou si vous voulez simplement que VS le fasse pour vous, trouvez l'événement de double clic dans la page de propriétés -> événements (petite icône représentant un éclair) et double-cliquez sur la zone de texte dans laquelle vous souhaitez entrer un nom de fonction pour cet événement.
Ce lien devrait aider
http://msdn.Microsoft.com/en-us/library/6w2tb12s(v=vs.90).aspx
Dans CellContentDoubleClick, l'événement est déclenché uniquement lorsque vous double-cliquez sur le contenu de la cellule. Je l'ai utilisé et fonctionne:
private void dgvUserList_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(e.RowIndex.ToString());
}
Cela fonctionnera, assurez-vous que votre contrôle Event est affecté à ce code, il a probablement été perdu. J'ai également remarqué que le double-clic ne fonctionnera que si la cellule n'est pas vide. Essayez de double-cliquer sur une cellule avec du contenu, ne plaisante pas avec le concepteur
private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
//do something
}
Vous obtenez le numéro d'index de la ligne dans le datagridview en utilisant les tables d'employés de la base de données northwind comme exemple:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'nORTHWNDDataSet.Employees' table. You can move, or remove it, as needed.
this.employeesTableAdapter.Fill(this.nORTHWNDDataSet.Employees);
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
var dataIndexNo = dataGridView1.Rows[e.RowIndex].Index.ToString();
string cellValue = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
MessageBox.Show("The row index = " + dataIndexNo.ToString() + " and the row data in second column is: "
+ cellValue.ToString());
}
}
}
le résultat vous montrera le numéro d'index de l'enregistrement et le contenu de la deuxième colonne de la table dans datagridview:
vous pouvez le faire par: CellDoubleClick
Event Ceci est du code.
private void datagridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(e.RowIndex.ToString());
}
Pour ce faire, il existe un événement par défaut lorsque l’en-tête de la ligne est double-cliqué. Vérifiez le code suivant,
private void dgvCustom_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
//Your code goes here
}