vb.net - 如何从 VB.net 中以编程方式创建的 datagridview 访问单元格?
问题描述
在 VB.net 中创建 datagridview 时,除了制作它的 Sub 之外,我无法从任何地方获取单元格。我尝试将代码放在 Form_Load 中并尝试使 Sub Public。我使用 Controls.Find,它可以找到 datagridview,但我无法访问任何行或单元格。我可以创建文本框和标签控件并从任何地方访问它们的文本内容,但对于 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
这就是我创建此控件的方式。也许我以错误的方式添加到控件?我愿意接受更好的方法来做到这一点。
解决方案
Dim dgv As DataGridView = CType(Controls("NewDGV"), DataGridView)
dgv.Rows(0).Cells(0).Value = "I found you!"
这样做是在 Controls 集合中找到第一个 Control,将其强制转换为 DataGridView 类型,并将其分配给变量 dgv。你可以操纵 dgv。在这种情况下,我在第一行的第一个单元格中放置了一些文本。
推荐阅读
- reactjs - Cellrenderer 和 react-router-dom 链接
- c# - 自定义授权过滤器在 ASP.NET Core 3 中不起作用
- r - 使用 reorder_within 后将轴标签中的项目加粗
- r - R:错误:在 dplyr 中使用 unnest 时长度不兼容
- angular - 在 Angular 哈希之前获取查询参数
- aws-secrets-manager - JMESPath 提取值匹配的键
- node.js - 使用 node.js 和 nginx 从域中删除 /public 的正确方法是什么?
- php - 使用 YouTube API 的 foreach 循环的 PHP 问题
- rust - 为什么在可变引用上进行模式匹配时不需要`ref mut`?
- hive - 在 HiveQL 中将序列号转换为字母