假设我在一个名为"UserName"的窗体上有一个标签控件.如何使用标签名称以编程方式引用该标签?
例如,我可以这样做:
For each ctrl as Control in TabPage.Controls
If ctrl.Name = "UserName" Then
' Do something
End If
Next
Run Code Online (Sandbox Code Playgroud)
这似乎效率很低.我想做的事情如下:
TabPage.Controls("UserName").Text = "Something"
Run Code Online (Sandbox Code Playgroud)
我做了一些谷歌搜索,但找不到满意的答案.大多数建议循环,有些人说.NET 2005不支持使用字符串名称直接refenece,而FindControl方法只是asp.net ...
编辑
感谢您的回复.这里有一些细节.
我有一个带有三个tabpages的窗体,所有这些设计和功能都非常相似,即相同的下拉菜单,标签,以类似的方式对事件做出反应等.
我没有为每个标签页的每个事件编写代码,而是构建了一个控制每个标签页的事件等的类.
例如,在每个标签页上都有一个名为"RecordCounter"的标签,它只是通过在下拉菜单中选择变量来填充数据网格视图中的行数.
所以我想要做的是,在下拉菜单中选择变量后,datagridview会自己填充数据,然后我只想显示标签中的行数("RecordCounter").
这是每个标签页上完全相同的过程,所以我正在做的是将标签页传递给类,然后我希望能够引用"RecordCounter"然后更新它.
在我的类中,我将ActivePage属性设置为用户选择的TabPage,然后希望能够执行以下操作:
ActivePage.RecordCounter.Text = GetNumberOfRows()
Run Code Online (Sandbox Code Playgroud)
Joh*_*sch 10
你应该可以使用Find():
TabPage.Controls.Find("UserName", false);
Run Code Online (Sandbox Code Playgroud)
这将搜索所有子控件并返回与该字符串匹配的数组.如果指定true第二个参数,它也将查看子控件的控件.
您的控件是在设计时还是运行时添加的?
如果在设计时添加它,那么您可以简单地通过名称引用它:Me.UserName.Text ="Something"
如果在运行时添加它,您可以使用以下内容:
TabPage.Controls.Find("UserName", true)
Run Code Online (Sandbox Code Playgroud)
第二个参数告诉它也搜索所有孩子,所以这肯定会找到你的控件.