2012-12-04 16 views
20

Mam datagridview w mojej aplikacji C# i użytkownik powinien być w stanie kliknąć tylko na pełne wiersze. Dlatego ustawiam SelectionMode na FullRowSelect.C# datagridview doubleclick w wierszu z FullRowSelect

Ale teraz chcę mieć zdarzenie, które jest uruchamiane, gdy użytkownik dwukrotnie kliknie wiersz. Chcę mieć numer wiersza w MessageBox.

Próbowałem następujące:

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 nic się nie dzieje. Co ja robię źle?

+1

jak można zapisać się dwukrotnie kliknąć zdarzenie? –

+1

W projektancie piszę to .roomDataGridView.CellContentDoubleClick + = new System.Windows.Forms.DataGridViewCellEventHandler (this.roomDataGridView_CellContentDoubleClick); – Metalhead89

+0

Właśnie usunąłem moje zdarzenie i zrobiłem to ponownie i teraz to działa. Naprawdę nie wiem, co się dzieje, ale teraz działa – Metalhead89

Odpowiedz

6

Nie należy ręcznie edytować pliki .designer w visual studio, które zwykle prowadzi do bólów głowy. Zamiast tego określ go w sekcji właściwości obiektu DataGridRow, która powinna być zawarta w elemencie DataGrid. Lub jeśli chcesz, aby VS to zrobił, aby znaleźć podwójne zdarzenie kliknięcia na stronie właściwości-> zdarzenia (mała ikona błyskawicy) i kliknij dwukrotnie obszar tekstowy, w którym chcesz wprowadzić nazwę funkcji dla tego zdarzenia.

Ten link powinien pomóc

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

3

To zadziała, upewnij się, że Twoje Zdarzenie sterujące jest przypisane do tego kodu, prawdopodobnie zostało zgubione. Zauważyłem również, że podwójne kliknięcie działa tylko wtedy, gdy komórka nie jest pusta. Spróbuj podwójne kliknięcie na komórkę z zawartością, nie zadzieraj z projektantem

private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 

    //do something 


} 
11

W Zdarzenie CellContentDoubleClick tylko przy podwójnym kliknięciu na zawartość komórki. Użyłem tego i działa:

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

uzyskać numer indeksu wiersza w datagridview przy użyciu Northwind pracowników bazy danych tabel jako przykład:

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

wynik pokaże numer indeksu rekordu i zawartość drugiej kolumnie tabeli w DataGridView:

enter image description here

Powiązane problemy