2010-10-13 5 views
8

Я использую vb.net и DataGridView на winform.Дважды щелкните строку DataGridView?

Когда пользователь дважды щелкает по строке, я хочу что-то сделать с этой строкой. Но как я могу узнать, нажал ли пользователь на строку или только где-нибудь в сетке? Если я использую DataGridView.CurrentRow, то, если строка выбрана, и пользователь щелкнул в любом месте сетки, текущая строка покажет выбранную, а не там, где пользователь щелкнул (что в данном случае не было бы в строке, и я бы хотел проигнорировать его).

ответ

24

Попробуйте CellMouseDoubleClick событие ...

Private Sub DataGridView1_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDoubleClick 
    If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then 
     Dim selectedRow = DataGridView1.Rows(e.RowIndex) 
    End If 
End Sub 

Это будет только огонь, если пользователь на самом деле по ячейке в сетке. Параметр If проверяет двойные клики на селекторах строк и заголовках строк.

+0

Стоит отметить, что вы можете использовать 'e.RowIndex == -1', если вы хотите что-то запустить, если не нажали строку – Luke

0

Я бы использовал событие DoubleClickDataGridView. Это, по крайней мере, будет срабатывать только при двойном щелчке пользователя в сетке данных - вы можете использовать MousePosition, чтобы определить, какую строку (если есть) пользователь дважды щелкнул.

+0

Я использую DoubleClick в DataGridView. Но как я могу использовать moustposition, чтобы сделать вывод, если двойной щелчок находился в фактической строке? – Alex

0

Вы можете попробовать что-то вроде этого.

Private Sub DataGridView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick 
    For index As Integer = 0 To DataGridView1.Rows.Count 
     If DataGridView1.Rows(index).Selected = True Then 
      'it is selected 
     Else 
      'is is not selected 
     End If 
    Next 
End Sub 

Имейте в виду, я не могу проверить это, потому что я diddent есть данные для заполнения мой DataGridView.

0

Вы можете попробовать это:

Private Sub grdview_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdview.CellDoubleClick 

    For index As Integer = 0 To grdview.Rows.Count - 1 

     If e.RowIndex = index AndAlso e.ColumnIndex = 1 AndAlso grdview.Rows(index).Cells(1).Value = "" Then 

      MsgBox("Double Click Message") 

     End If 
    Next 
End Sub 
3

Использование DataGridView DoubleClick Evenet, а затем Datagrdiview1.selectedrows [0] .cell [ "CellName"], чтобы получить значение и процесс.

Ниже приведен пример записи клиентов при двойном щелчке по выбранной строке.

частной юридической силы (отправитель объекта, EventArgs е) dgvClientsUsage_DoubleClick {

 if (dgvClientsUsage.SelectedRows.Count < 1) 
     { 
      MessageBox.Show("Please select a client"); 
      return; 
     } 

     else 
     { 
      string clientName = dgvClientsUsage.SelectedRows[0].Cells["ClientName"].Value.ToString(); 

      // show selected client Details 
      ClientDetails clients = new ClientDetails(clientName); 
      clients.ShowDialog(); 

     } 
    } 
Смежные вопросы