【问题标题】:Change the .Text property of TextBoxes in an array of TextBox vb.net更改 TextBox vb.net 数组中 TextBoxes 的 .Text 属性
【发布时间】:2012-06-19 17:52:16
【问题描述】:

我有一个文本框数组。让我们说这个:

Dim BreakFast1() As TextBox = {txtMBreak1, txtTBreak1, txtWBreak1, txtThBreak1, txtFBreak1, txtSBreak1, txtSunBreak1}

我要做的是为数组的每个文本框设置 .Text 属性。我试过这个:

For i As Integer=0 to 6
  BreakFast1(i).Text= "Smt"
Next

没有成功。我究竟做错了什么? 提前致谢

【问题讨论】:

  • 这应该可行(尽管我会推荐使用For Each 循环)。不工作怎么办?它会抛出异常吗?是不是编译失败了?
  • 感谢您的评论。引发 NullReferenceException。我应该检查对象是否为空或使用“New”关键字来创建对象实例。为什么 For Each 更好?
  • 我想都是。我尝试手动设置 i 值(例如 BreakFast1(2).Text="blah blah")但仍然抛出异常
  • 你用来填充数组的变量也是空的吗?例如,如果您在Dim BreakFast1()... 行上放置一个断点,然后将鼠标悬停在txtMBreak1 上,它是说它为空,还是说它是否引用了一个TextBox 对象?其他的呢?
  • 是的,它什么也没说。我应该在数组中将它们声明为新的文本框等吗?

标签: vb.net visual-studio-2010 vb.net-2010


【解决方案1】:

您发布的代码没有任何问题,但假定您添加到数组中的文本框实际上引用了实例化的 TextBox 对象。如果这些为空,它显然不会工作。要解决这个问题,您有多种选择:

  • Dim BreakFast1()... 行向下移动到实例化这些文本框对象的位置下方。
  • 将文本框变量设置为该行之前的新实例。
  • 或者,放弃所有这些文本框变量,直接将它们实例化到数组中。

例如:

Dim BreakFast1() As TextBox = {New TextBox(), New TextBox(), New TextBox(), New TextBox(), New TextBox(), New TextBox(), New TextBox()}

当您遍历它们时,我建议您使用 For Each 循环,而不是(除非有其他原因需要知道循环内的索引):

For Each i As TextBox In BreakFast1
    i.Text = "Smt"
Next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多