vb.net - 使用 For 循环选择文本框

标签 vb.net winforms

抱歉,这是一个奇怪而愚蠢的问题,但我需要一个解决方案......

我有 30 个文本框,名为 Txt1、Txt2、Txt3、...、Txt30
我必须在单击按钮时将文本框填充为 Txt1.text = 0..

有什么办法
点击按钮

Dim i as Integer
For i = 1 to 30  '----- Possible in string but don't know if possible in textboxes
Txt(i).text = 0
Next

或者我必须写下所有 30 行,例如

Txt1.text = 0
...
Txt30.text = 0

我不知道这个问题是怎么问出来的,也许问题不恰当。
预先感谢...

最佳答案

如果文本框都包含在表单的 Controls 集合中,那么循环它们真的很容易

For Each(t in Me.Controls.OfType(Of TextBox)())
   t.Text = "0"

当然,这种方法的优点是,如果您向表单添加其他文本框,则不必担心。将使用 foreach 循环找到它们,而没有固定的上限。

而且,如果并非所有文本框都应包含在循环中,那么您只需使用要使用的文本框的 Tag 属性即可。例如,如果将 Tag 属性设置为字符串“Y”,则可以更改 foreach 循环以仅查找具有匹配 Tag 属性的控件

For Each t in Me.Controls.OfType(Of TextBox)() _ 
                         .Where(Function(x) x.Tag = "Y")
   t.Text = "0"

如果所有文本框都包含在同一个容器(表单、组框或面板)中,则上述两种解决方案效果很好,相反,如果这些文本框分散在不同的容器中(一些在组框中,其他在面板中等),则您可以构建一个 List(Of TextBox) 变量,用文本框实例填充它,并在需要时使用它

Dim myTexts = New List(Of TextBox)() From  { Txt1, Txt2, Txt3, ....}

并循环这个变量

关于vb.net - 使用 For 循环选择文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39228790/

相关文章:

vb.net - Linq 在 ORDER BY 中自定义排序,其余结果按 asc 排序

c# - 用大写字母和粗体格式化 RichTextBox 的第一行

c# - 如何检测 WinForms 中的可本地化属性?

c# - 如何将我自己的主题应用到我的 Windows 窗体应用程序中?

c# - CellContentClick 事件并不总是有效

.net - 在Adobe Reader中以隐藏代码创建的打开pdf文件

vb.net - DataColumn 的 AutoIncrement 始终返回 False

asp.net - 如何获取动态创建的文本框的文本值

c# - 检索准确日期的最佳方法?

c# - 删除特定控件的所有事件处理程序