【问题标题】:Why is gridview.selectedColumns nothing?为什么 gridview.selectedColumns 什么都没有?
【发布时间】:2014-04-02 08:09:06
【问题描述】:

我想运行这样的代码,但它总是跳过循环,所以我在控制台中看不到任何行。 这意味着 selectedColumns 是空的。我的假设是我(或用户)从列中选择一个单元格,然后 selectedColummns 为 +1。但看起来,它不起作用。然后我尝试设置 selectionMode 的 proberties 来选择全列,但随后抛出异常:

“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

【问题讨论】:

    标签: vb.net datagridview


    【解决方案1】:

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

    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 更改事件将不起作用,因为我需要将选定的列写入 .csv 文件。不过,现在我通过 selectedcell.columnindex 管理它,在 1 分钟内查看我的编辑 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多