如何在循环中处理以编程方式创建的工具的事件

时间:2017-10-03 14:14:25

标签: vb.net loops dynamic datagridview

我正在创建一个表单生成器,它可以创建多个选项卡,并且每个选项卡上都会放置一个链接到数据集数组中数据集的DataGridView:

For Each table As DataTable In datasetInput(i).Tables
    If arr_tables(i)(j).Equals(table.TableName) Then
        tablename = table.TableName
        Dim grid As New DataGridView
        grid.DataSource = table
        grid.Name = j
        grid.Location = place
        grid.Size = New System.Drawing.Size(734, 150)
        TabPage.TabPages(i).Controls.Add(grid)
    End If
Next

请注意,此循环嵌套在另一个循环中,该循环处理表单上的每个选项卡。 arr_tables是一个锯齿状数组,它处理我想要的数据集中的哪些表,因为我不想将每个数据表拉入DGV。

现在我需要做的是格式化名称列中的任何单元格" Equation"。对于" Equation"中的所有单元格。专栏我想成为一个带有几个不同选项的下拉单元格。其次,我该如何处理单元格点击事件?说任何属于列名称的单元格"输入"我想提供一个MessageBox。

如果在循环中没有创建DataGridViews,通常我会做这些事情没有问题。但是因为他们在代码中迷失了,我不知道如何引用它们。

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    For Each table As DataTable In datasetInput(i).Tables
        If arr_tables(i)(j).Equals(table.TableName) Then
            tablename = table.TableName
            Dim grid As New DataGridView
            grid.DataSource = table
            grid.Name = j
            grid.Location = place
            grid.Size = New System.Drawing.Size(734, 150)
            TabPage.TabPages(i).Controls.Add(grid)

            AddHandler grid.SelectionChanged, AddressOf grid_SelectionChanged

        End If
    Next

End Sub

Private Sub grid_SelectionChanged(sender As Object, e As EventArgs)
    ' your code
End Sub