web-dev-qa-db-fra.com

c # datagridview double cliquer sur la ligne avec FullRowSelect

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?

21
Metalhead89

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

6
Pseudonym

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());
    }
16
cihata87

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


 }
4
CR41G14

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:

 enter image description here

2
Ashraf Abusada

vous pouvez le faire par: CellDoubleClick Event Ceci est du code. 

private void datagridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show(e.RowIndex.ToString());
    }
0
MK.DEVELOPER

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
 }
0
Christlin Panneer