0

我有多个运行时生成的 datagridview 控件,我希望能够查看用户是否在特定的 datagridview 中选择了多行。由于某种原因,以下的结果始终为零。当我 F9 停止程序时,我可以看到这个 datagridview 行的选定值是 false。任何想法如何解决这一问题?

我的代码如下:

strDGVName = "dgvCheckpoint" & intTimeModificationSender

For Each tbp As TabPage In frmTimingP2P.tabctrlTimingTable.Controls
    For Each dgv In tbp.Controls
        If dgv.Name = strDGVName Then
            intSelectedRowCount = dgv.Rows.GetRowCount(DataGridViewElementStates.Selected)
        End If
    Next
Next

谢谢

我现在尝试了以下方法:

For Each tbp As TabPage In frmTimingP2P.tabctrlTimingTable.Controls
    For Each ctrl As Control In tbp.Controls
        Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
        If Not dgv Is Nothing Then
            If dgv.Name = strDGVName Then
                intSelectedRowCount = dgv.SelectedRows.Count
            End If
        End If
    Next
Next

也:

Dim c As Collections.Generic.IEnumerable(Of DataGridView)
For p = 0 To frmTimingP2P.tabctrlTimingTable.TabCount - 1
    c = frmTimingP2P.tabctrlTimingTable.TabPages(p).Controls.OfType(Of DataGridView)()
    If c(0).Name = strDGVName Then p = frmTimingP2P.tabctrlTimingTable.TabCount
    End If
Next
intSelectedRowCount = c(0).SelectedRows.Count

但它仍然返回零行数。

4

2 回答 2

1

这应该是您正在寻找的:

dgv.SelectedRows.Count
于 2012-12-07T14:57:27.127 回答
1

好的,所以解决方案如下:

两个都:

For Each tbp As TabPage In frmTimingP2P.tabctrlTimingTable.Controls
    For Each ctrl As Control In tbp.Controls
        Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
        If Not dgv Is Nothing Then
            If dgv.Name = strDGVName Then
                intSelectedRowCount = dgv.SelectedRows.Count
            End If
        End If
    Next
Next

和:

Dim c As Collections.Generic.IEnumerable(Of DataGridView)
For p = 0 To frmTimingP2P.tabctrlTimingTable.TabCount - 1
    c = frmTimingP2P.tabctrlTimingTable.TabPages(p).Controls.OfType(Of DataGridView)()
    If c(0).Name = strDGVName Then p = frmTimingP2P.tabctrlTimingTable.TabCount
Next
intSelectedRowCount = c(0).SelectedRows.Count

Work as they should. The problem was that in my runtime generated DataGridView controls, I did not set the SelectionMode Method to FullRowSelect, and I was selecting individual cells, which do not count as "Rows".

Thanks for your help!

于 2012-12-07T17:28:48.813 回答