Vb.net 为什么gridview.selectedColumns什么都没有?

Vb.net 为什么gridview.selectedColumns什么都没有?,vb.net,datagridview,Vb.net,Datagridview,我想运行这样的代码,但它总是跳过循环,所以在控制台中看不到行。 这意味着selectedColumns为空。我的假设是,我(或用户)从列中选择一个单元格,然后SelectedColumn为+1。但从表面上看,它不起作用。然后我尝试将selectionMode的proberties设置为select full columns,但随后引发了一个异常: “System.InvalidOperationException”附加信息:如果选择了全列选择,则SortMode不能自动 我不知道什么是SortM

我想运行这样的代码,但它总是跳过循环,所以在控制台中看不到行。 这意味着selectedColumns为空。我的假设是,我(或用户)从列中选择一个单元格,然后SelectedColumn为+1。但从表面上看,它不起作用。然后我尝试将selectionMode的proberties设置为select full columns,但随后引发了一个异常:

“System.InvalidOperationException”附加信息:如果选择了全列选择,则SortMode不能自动

我不知道什么是SortMode

 For Each col As DataGridViewColumn In datagridview2.SelectedColumns

        Console.Write(datagridview2.SelectedColumns.Count)
        Console.Write("1")


    Next
如何将这些列转换为selectedColumns

我的代码解决了我的问题,但我想它不是最聪明的:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    Dim body As String = ""

    Dim myWriter As New StreamWriter("H:\downloads\test.csv", True)
    Dim list As List(Of Integer) = New List(Of Integer)

    For Each cell As DataGridViewCell In datagridview2.SelectedCells

        If list.Contains(cell.ColumnIndex) = False Then
            list.Add(cell.ColumnIndex)
        End If

    Next


    For i = 0 To datagridview2.Rows.Count - 1

        For ix = 0 To datagridview2.Columns.Count - 1

            If list.Contains(ix) Then

                If datagridview2.Rows(i).Cells(ix).Value IsNot Nothing Then

                    body = body + datagridview2.Rows(i).Cells(ix).Value.ToString + ";"
                Else
                    body = body + ";"
                End If

            End If

        Next
        myWriter.WriteLine(body)
        body = ""

    Next

    myWriter.Close()

End Sub

您需要在所选更改事件触发后执行此操作。 例如:

Private Sub Mydg_ColSelected(sender As Object, e As SelectionChangedEventArgs) Handles datagridview2.SelectionChanged

   For Each col As DataGridViewColumn In datagridview2.SelectedColumns

    Console.Write(datagridview2.SelectedColumns.Count)
    Console.Write("1")

    Next

End Sub

或者,如果这不是您想要的,则尝试处理ColumnHeaderMouseClick事件。我不确定您正在使用的技术,例如Winforms、WPF、silverlight

ColumnHeaderMouseClick或ColSelected change event将不起作用,因为我需要将所选列写入.csv文件。尽管如此,现在我还是通过selectedcell.columnindex来管理它(在1分钟内查看我的编辑:)