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

わかりましたので、解決策は次のとおりです。

両方:

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

彼らがすべきように働きます。問題は、実行時に生成された DataGridView コントロールで、SelectionMode メソッドを FullRowSelect に設定せず、「行」としてカウントされない個々のセルを選択していたことです。

ご協力いただきありがとうございます!

于 2012-12-07T17:28:48.813 に答える
1

これはあなたが探しているものでなければなりません:

dgv.SelectedRows.Count
于 2012-12-07T14:57:27.127 に答える