web-dev-qa-db-de.com

c # datagridview Doppelklicken Sie mit FullRowSelect auf eine Zeile

Ich habe in meiner C # -Anwendung ein Datagridview, und der Benutzer sollte nur in der Lage sein, auf vollständige Zeilen zu klicken. Also habe ich den SelectionMode auf FullRowSelect gesetzt.

Jetzt möchte ich jedoch ein Ereignis haben, das ausgelöst wird, wenn der Benutzer auf eine Zeile doppelklickt. Ich möchte die Zeilennummer in einer MessageBox haben.

Ich habe folgendes versucht:

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

Zum Glück passiert nichts. Was mache ich falsch?

21
Metalhead89

Bearbeiten Sie die .designer-Dateien nicht manuell in Visual Studio, was in der Regel zu Kopfschmerzen führt. Geben Sie es stattdessen entweder im Eigenschaftenabschnitt Ihrer DataGridRow an, die in einem DataGrid-Element enthalten sein sollte. Oder wenn Sie nur möchten, dass VS dies für Sie erledigt, finden Sie das Doppelklick-Ereignis auf der Eigenschaftenseite-> Ereignisse (kleines Blitzsymbol) und doppelklicken Sie auf den Textbereich, in den Sie einen Funktionsnamen für das Ereignis eingeben würden. 

Dieser Link sollte helfen

http://msdn.Microsoft.com/de-de/library/6w2tb12s(v=vs.90).aspx

6
Pseudonym

In CellContentDoubleClick wird das Ereignis nur beim Doppelklick auf den Inhalt der Zelle ausgelöst. Ich habe das verwendet und funktioniert: 

    private void dgvUserList_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show(e.RowIndex.ToString());
    }
16
cihata87

Dies funktioniert, stellen Sie sicher, dass Ihr Steuerelement Event diesem Code zugewiesen ist. Wahrscheinlich ist es verloren gegangen. Ich habe auch festgestellt, dass Doppelklicken nur funktioniert, wenn die Zelle nicht leer ist. Doppelklicken Sie mit der Maus auf eine Zelle mit Inhalt 

 private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {

   //do something


 }
4
CR41G14

Sie erhalten die Indexnummer der Zeile im datagridview am Beispiel von Northwind Database Employee-Tabellen:

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

das Ergebnis zeigt Ihnen die Indexnummer des Datensatzes und den Inhalt der zweiten Tabellenspalte in Datagridview:

 enter image description here

2
Ashraf Abusada

Ich denke, Sie suchen nach diesem: RowHeaderMouseDoubleClick-Ereignis

private void DgwModificar_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) {
...
}

um den Zeilenindex zu erhalten:

int indice = e.RowIndex

0
Said El Bakkali

sie können dies durch Folgendes tun: CellDoubleClick Ereignis Dies ist Code. 

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

Für Ihren Zweck gibt es ein Standardereignis, wenn Sie auf die Zeilenüberschrift doppelklicken. Überprüfen Sie den folgenden Code

 private void dgvCustom_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
 {
      //Your code goes here
 }
0