2010-10-13 57 views
8

Tôi đang sử dụng vb.net và DataGridView trên một biểu mẫu.Nhấp đúp vào hàng DataGridView?

Khi người dùng nhấp đúp vào một hàng, tôi muốn làm điều gì đó với hàng này. Nhưng làm cách nào tôi có thể biết liệu người dùng đã nhấp vào một hàng hay chỉ bất cứ nơi nào trong lưới? Nếu tôi sử dụng DataGridView.CurrentRow thì nếu một hàng được chọn và người dùng nhấp vào bất kỳ nơi nào trên lưới, hàng hiện tại sẽ hiển thị lựa chọn và không phải nơi người dùng nhấp (trong trường hợp này sẽ không nằm trên hàng và tôi sẽ bỏ qua nó).

Trả lời

24

Thử sự kiện 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 

này lửa sẽ chỉ nếu người dùng là thực sự trên một ô trong lưới. Kiểm tra If lọc ra các nhấp đúp vào các bộ chọn hàng và tiêu đề.

+0

Lưu ý rằng bạn có thể sử dụng 'e.RowIndex == -1' nếu bạn muốn chạy một cái gì đó nếu bạn không nhấp vào một hàng – Luke

0

Tôi sẽ sử dụng sự kiện DoubleClick của DataGridView. Điều này sẽ ít nhất chỉ cháy khi người dùng nhấp đúp vào lưới dữ liệu - bạn có thể sử dụng MousePosition để xác định hàng nào (nếu có) người dùng đã nhấp đúp vào.

+0

Tôi đang sử dụng DoubleClick của DataGridView. Nhưng làm thế nào tôi có thể sử dụng moustposition để suy ra nếu nhấp đúp chuột vào một hàng thực tế? – Alex

0

Bạn có thể thử một cái gì đó như thế này.

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 

Hãy nhớ rằng tôi không thể kiểm tra điều này vì tôi đã có dữ liệu để điền DataGridView của mình.

0

Bạn có thể thử này:

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

Sử dụng DataGridView DoubleClick Evenet và sau đó Datagrdiview1.selectedrows [0] .cell [ "CellName"] để nhận được giá trị và quy trình.

Ví dụ dưới đây cho thấy khách hàng ghi lại khi nhấp đúp vào hàng đã chọn.

private void (người gửi đối tượng, EventArgs e) {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(); 

     } 
    } 
Các vấn đề liên quan