我在一个winform上使用vb.net和DataGridView。双击DataGridView行?
当用户双击某一行时,我想对该行执行某些操作。但是我怎么知道用户是否点击了一行或者只是在网格的任何地方?如果我使用DataGridView.CurrentRow
,那么如果选择一行并且用户在网格上的任何地方点击,则当前行将显示选择的而不是用户点击的位置(在这种情况下,它不在一行上,我想忽略它)。
我在一个winform上使用vb.net和DataGridView。双击DataGridView行?
当用户双击某一行时,我想对该行执行某些操作。但是我怎么知道用户是否点击了一行或者只是在网格的任何地方?如果我使用DataGridView.CurrentRow
,那么如果选择一行并且用户在网格上的任何地方点击,则当前行将显示选择的而不是用户点击的位置(在这种情况下,它不在一行上,我想忽略它)。
尝试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
检查过滤掉行选择器和标题上的双击。
我会使用DataGridView的DoubleClick事件。这至少只会在用户双击数据网格时触发 - 您可以使用MousePosition来确定用户双击的行(如果有的话)。
我使用的DataGridView的的DoubleClick。但是,如何使用moustposition来推断双击是否在实际行上? – Alex 2010-10-13 04:38:50
你可以尝试这样的事情。
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。
在双击处理程序中使用DataGridView.HitTest来找出发生点击的位置。
你可以试试这个:
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
使用的DataGridView的DoubleClick Evenet然后Datagrdiview1.selectedrows [0]。细胞[ “单元名”]中获取价值和过程。
下面的示例显示了客户端双击所选行时的记录。
私人无效dgvClientsUsage_DoubleClick(对象发件人,EventArgs的) {
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();
}
}
值得注意的是,如果你想运行一些东西,如果你没有点击某行,你可以使用'e.RowIndex == -1' – Luke 2014-08-14 13:47:48