2013-03-21 3 views
1

Я хочу выбрать строку в моем DataGridView щелчком правой кнопки мыши. Но с моим текущим кодом мне сначала нужно щелкнуть по строке с помощью обычного щелчка левой кнопкой мыши.DataGridView select Row

Есть ли способ выбрать текущую строку щелчком правой кнопки мыши и открыть контекстное меню ContextMenuStrip?

Private Sub DataGridView1_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown 
    If e.Button = Windows.Forms.MouseButtons.Right AndAlso e.RowIndex >= 0 Then 
     Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex) 

    End If 
End Sub 

Private Sub datagridview1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown 
    If e.Button = Windows.Forms.MouseButtons.Right Then 
     Dim hti As DataGridView.HitTestInfo = sender.HitTest(e.X, e.Y) 
     If hti.Type = DataGridViewHitTestType.Cell Then 
      If Not DataGridView1.Rows(hti.RowIndex).Selected Then 
       DataGridView1.ClearSelection() 
       DataGridView1.Rows(hti.RowIndex).Selected = True 
      End If 
     End If 
    End If 
End Sub 
+0

Возможный дубликат? http://stackoverflow.com/q/5884713/211627 – JDB

ответ

0

Попробуйте это:

Private Sub DataGrid1_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) 

    On Error Resume Next 

    If e.Button = MouseButtons.Right Then 

     'Clear previous selections 
     For x As int32 = 0 To ds.Tables(0).Rows.Count() - 1 
      DataGrid1.UnSelect(x) 
     Next x 

     'select row under mouse click 
     Dim info As DataGrid.HitTestInfo = DataGrid1.HitTest(e.X, e.Y) 

     If info.Row > -1 Then 

      DataGrid1.CurrentRowIndex = info.Row 
      DataGrid1.Select(info.Row) 

      Application.DoEvents() 

      DataGridContextMenu.Show(Cursor.Position) 

     End If 

     info = Nothing 

    End If 

End Sub