首页 > 解决方案 > 有没有办法用listview索引调用datagridview的维度

问题描述

我知道我的问题很复杂,我不知道如何解释。

我有:

  1. 具有 2 列 A1 和 A2 以及 A3 ...A200 的 datagridview。
  2. 有 3 个列表框:列表框 1 包含来自此列表的 datagridview 列标题 A1 到 A200 的名称,我填写列表视图 2 和 3。
  3. 例如列表框 2 = A1 / 列表框 3 = A3

我的代码:

Dim iA1 = (From row As DataGridViewRow In DataGridView1.Rows Where ...etc)).ToArray
Dim iA2 = (From row As DataGridViewRow In DataGridView1.Rows Where ...etc)).ToArray
Dim iA3 = (From row As DataGridViewRow In DataGridView1.Rows Where ...etc)).ToArray
Dim iA4 ... iA200

Dim Pearson As Double = Correlation.Pearson(ListBox2, ListBox3).ToString("0.00000")

我想知道列表框 1 和 2 是否可以引用 dim A1 和 Dim A3

在此处输入图像描述

标签: vb.netlistview

解决方案


这是我从你的帖子中了解到的

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        With DataGridView1
            For i As Integer = 0 To 5
                .Columns.Add("ColA" & (i + 1).ToString, "A" & (i + 1).ToString)
                .Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
            Next
            For i As Integer = 0 To 3
                .Rows.Add()
                For c As Integer = 0 To .Columns.Count - 1
                    Randomize()
                    'put some values
                    .Item(c, i).Value = CInt(Rnd() * 30.7)
                Next
            Next

            .AllowUserToAddRows = False
            .Dock = DockStyle.Top
        End With

    End Sub


    Function ColumnValues(Column As String) As Double()
        Dim col As DataGridViewColumn() = (From cx As DataGridViewColumn In DataGridView1.Columns _
                                           Where UCase(cx.HeaderText) = UCase(Column) _
                                           ).ToArray

        Dim c As Integer = col.Count
        If c <> 1 Then
            Throw New Exception("Error :Column [ " & Column & " ] Not found")
            'Or
            'Return Nothing
        End If

        c = col(0).Index


        Return (From row As DataGridViewRow In DataGridView1.Rows _
                Where row.Cells(c).Value IsNot Nothing _
                Select Convert.ToDouble(row.Cells(c).FormattedValue) _
                ).ToArray

    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim d1 As Double() = ColumnValues("A1")
        Dim d2 As Double() = ColumnValues("a5")

        Dim s As String = "1st Column values " & vbCrLf
        For Each a In d1
            s &= a.ToString & " "
        Next

        s &= vbCrLf & "2nd column values" & vbCrLf
        For Each a In d2
            s &= a.ToString & " "
        Next
        MessageBox.Show(s)
    End Sub
End Class

现在d1 and d2保存值,A1 and A5无需声明太多影响应用程序性能的变量


推荐阅读