none
如何在VB2008速成版中实现控件数组或用其他更好的办法来代替控件数组 RRS feed

  • 问题

  • 在查找计算器的代码中,找到了VB6.0的代码,但是上面的控件数组在VB2008中已经取消了。

    不知如何实现。谢谢

    2010年7月14日 6:08

答案

全部回复

  • 控件取名label1,label2...

    for i=1 to 2

    Me.Controls.Find("Label" & i, True)(0).Text=i

    next


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 月月鸟 2010年7月15日 1:05
    2010年7月14日 6:20
    版主
  • 这个方法很巧妙。

    但是Controls是什么意思,

    Me.Controls.Find("Label" & i, True)(0).Text = i 是什么意思

    2010年7月15日 1:01
  • 应该是查找[name]项带有字符串的过程,我也不太清除,希望高手解答
    2010年7月17日 13:01
  • 你好!

         强烈建议你不要依赖特定的命名来编写你的程序,代码的健壮性不高,维护性也很差。


    周雪峰
    2010年7月19日 6:32
    版主
  • 你好!

          什么是特定的命名来编写。

          能不能举一例子

    谢谢

    2010年7月19日 8:09
  • 你好!

     

    比如你的代码是这样的:

    for i=1 to 2

    Me.Controls.Find("Label" & i, True)(0).Text=i

    那你的控件就必须命名为Label1,Label2....来配合你的程序才可以,今后维护这段代码或是引用你代码的人不知道你的“潜规者”而把控件命名为其他的任何值(因为控件的命名是任意的,并没有规定一定要怎么命名),都会引发问题。

     


    周雪峰
    2010年7月19日 12:08
    版主
  • 谢谢,我明白了
    2010年8月11日 9:52
  •   Private Sub Button101_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button101.Click, Button102.Click, Button103.Click, Button104.Click
        If Me.Controls.Find(DirectCast(sender, Button).Name, True)(0).ForeColor = Color.Blue Then
          Me.Controls.Find(DirectCast(sender, Button).Name, True)(0).ForeColor = Color.Red
        End If
      End Sub
    2011年6月6日 10:04