[英]VB.Net DataGridView within Container not Working
我在VB.Net中有以下代码; 测试了此处列出的4种情况:
1-此代码有效; 如果我使DataGridView1变量在“ TabControl1”之外;
2-此代码无效; 如果我在“ TabControl1”中创建DataGridView1变量;
3-此代码有效; 如果我将DataGridView1固定在“ TabControl1”之外;
4-此代码有效; 如果我将DataGridView1固定在“ TabControl1”内部;
我的问题是:如何使它适用于情况2(即“ TabControl1”中的DataGridView1变量)?
Dim CurrentTable As String = "AAAA|BBBBB|CCCCC"
Dim Values() As String = CurrentTable.Split("|"c)
Dim DGV As DataGridView ' VARIABLE
DGV = CType(Me.Controls("DataGridView1"), DataGridView) ' VARIABLE
DGV.Rows.Add(Split(CurrentTable, "|")) ' VARIABLE
DataGridView1.Rows.Add(Split(CurrentTable, "|")) ' FIXED
如评论中所述, Me.Controls
将仅包含该表单拥有的控件。 其他容器控件( GroupBox
, Panel
, TabPage
)中的控件将驻留在该控件的ControlCollection
。
您还可以使用“ Find
来搜索其他那些容器:
' TRUE indicates you also want to search child containers
Dim dgvs = Me.Controls.Find("DataGridView1", True)
Dim myDGV As DataGridView
' dgvs will be an array of matching controls, so check
If dgvs.Count > 0 Then
myDGV = CType(dgvs(0), DataGridView)
End If
如果您知道名称和/或将经常引用它,那么为它声明一个变量比遍历一遍又一遍地搜索相同的控件更简单:
Public Class Form123
' form level var:
Private myDGV As DataGridView
Private Form_Load(...
' set the reference:
myDGV = DataGridView1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.