2012-12-04 8 views
20

Ho una vista datagrid nella mia applicazione C# e l'utente dovrebbe solo essere in grado di fare clic su righe complete. Così ho impostato SelectionMode su FullRowSelect.C# datagridview doubleclick su riga con FullRowSelect

Ma ora desidero avere un evento che viene generato quando l'utente fa doppio clic su una riga. Voglio avere il numero di riga in un MessageBox.

Ho provato il seguente:

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

Unforunately non succede nulla. Che cosa sto facendo di sbagliato?

+1

come si fa a iscriversi a doppio clic evento? –

+1

Nella finestra di progettazione scrivo this.roomDataGridView.CellContentDoubleClick + = new System.Windows.Forms.DataGridViewCellEventHandler (this.roomDataGridView_CellContentDoubleClick); – Metalhead89

+0

Ho appena cancellato il mio evento e l'ho fatto di nuovo e ora funziona. Non so davvero cosa stava succedendo, ma ora funziona – Metalhead89

risposta

6

Non modificare manualmente i file .designer in studio visivo che di solito porta a mal di testa. Invece, specificalo nella sezione delle proprietà di DataGridRow che dovrebbe essere contenuto all'interno di un elemento DataGrid. Oppure, se vuoi che VS lo faccia per te, trova l'evento doppio clic all'interno della pagina delle proprietà -> eventi (piccola icona del fulmine) e fai doppio clic sull'area di testo in cui inserire il nome di una funzione per quell'evento.

Questo collegamento dovrebbe aiutare

http://msdn.microsoft.com/en-us/library/6w2tb12s(v=vs.90).aspx

3

Questo funzionerà, assicuratevi che l'evento di controllo sia assegnato a questo codice, probabilmente è andato perso, ho anche notato che il doppio clic funzionerà solo se la cella non è vuota. Prova un doppio clic su una cella con il contenuto, non si scherza con il progettista

private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 

    //do something 


} 
11

In generato l'evento CellContentDoubleClick solo quando si fa doppio clic sui contenuti della cella. Ho usato questa e funziona:

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

si ottiene il numero indice della riga nella datagridview utilizzando Northwind dipendenti del database tabelle come esempio:

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

il risultato vi mostrerà il numero di indice di registrazione e il contenuto della seconda colonna della tabella in datagridview:

enter image description here

Problemi correlati