如何从VB.net中以编程方式创建的datagridview访问单元格?

时间:2019-05-16 17:57:34

标签: vb.net datagridview

在VB.net中创建datagridview时,我无法从除创建它的Sub以外的任何位置进入单元格。 我尝试将代码放置在Form_Load中,并尝试将Sub Public设置为Sub Public。 我使用Controls.Find查找数据网格视图,但无法访问任何行或单元格。我可以创建文本框和标签控件,并从任何地方访问其文本内容,但使用datagridview则不能。这对我来说很奇怪。 在Visual Studio 2017中使用和学习Visual Basic,供我自己的家庭企业实用程序使用。

Dim dgv As New DataGridView
dgv.Location = New Point(2, 200)
dgv.Size = New Size(300, 50)
dgv.Name = "NewDGV"
Dim ColumnTitles() As String = {"ProdId", "Price"}
Dim ColumnWidths() As Integer = {50, 50) 
For i = 0 To UBound(ColumnTitles)
    Dim col As New DataGridViewTextBoxColumn
    col.DataPropertyName = ColumnTitles(i)
    col.HeaderText = ColumnTitles(i)
    col.Name = ColumnTitles(i)
    col.Width = ColumnWidths(i)
    dgv.Columns.Add(col)
Next
Controls.Add(dgv)
‘the following sees the datagridview just fine 
‘within the same sub   
Dim x = dgv.Rows(0).Cells(0).Value

这就是我创建此控件的方式。也许我以错误的方式添加了控件?我愿意采取更好的方法。

2 个答案:

答案 0 :(得分:1)

    Dim dgv As DataGridView = CType(Controls("NewDGV"), DataGridView)

    dgv.Rows(0).Cells(0).Value = "I found you!"

这是在Controls集合中找到第一个Control,将其强制转换为DataGridView类型,然后将其分配给变量dgv。您可以操纵dgv。在这种情况下,我将一些文本放在第一行的第一个单元格中。

答案 1 :(得分:0)

您可以向控件集合询问datagridview的实例

Dim MyDgv As DataGridView = Controls.Cast(Of DataGridView).First(Function(dgv) dgv.Name = "NewDGV")

然后使用“ MyDGV”属性,方法和/或事件