如何在VB中通过输入TextBox名称获取对应文本框控件的内容
实现方案
错误原因分析
- 第一种写法:尝试把字符串类型的控件名直接赋值给
TextBox类型变量,类型不匹配,运行会直接抛出类型转换异常 - 第二种写法:只是把输入的控件名字符串赋值给了字符串变量,没有关联到实际的控件实例,无法获取目标控件的属性值
正确实现代码(WinForm场景)
' 读取输入的控件名,去除首尾空格 Dim inputName As String = TextBox2.Text.Trim() ' 兼容输入带.text后缀的场景,不区分大小写 If inputName.EndsWith(".text", StringComparison.OrdinalIgnoreCase) Then inputName = inputName.Substring(0, inputName.Length - 5) End If ' 从当前窗体的控件集合递归查找对应名称的TextBox控件 Dim targetTxt As TextBox = TryCast(Me.Controls.Find(inputName, True).FirstOrDefault(), TextBox) If targetTxt IsNot Nothing Then ' 成功获取到目标控件的Text内容 Dim targetContent As String = targetTxt.Text ' 可根据需求对targetContent做后续处理,示例为弹窗展示 MessageBox.Show("对应控件内容为:" & targetContent) Else MessageBox.Show("未找到匹配的TextBox控件") End If
代码说明
Me.Controls.Find(inputName, True)的第二个参数设为True表示支持递归查找子容器内的控件,哪怕目标TextBox放在Panel、GroupBox等容器内也可以正常匹配TryCast做安全类型转换,如果找到的同名控件不是TextBox类型会返回Nothing,避免类型转换报错- 自动兼容带
.text后缀的输入格式,完全匹配你提出的示例场景要求
内容的提问来源于stack exchange,提问作者Bianca Mada
相关产品推荐
相关产品推荐

