注册 登录
编程论坛 VB6论坛

VB6和NET 写法区别

yuk_yu 发布于 2016-06-15 11:47, 1496 次点击
程序代码:

            Form1.Label1.BackColor = Color.LimeGreen
            Form1.Label2.BackColor = Color.LimeGreen
            Form1.Label3.BackColor = Color.LimeGreen
            Form1.Label4.BackColor = Color.LimeGreen
            Form1.Label5.BackColor = Color.LimeGreen
            Form1.Label6.BackColor = Color.LimeGreen
            Form1.Label7.BackColor = Color.LimeGreen
            Form1.Label8.BackColor = Color.LimeGreen
            Form1.Label9.BackColor = Color.LimeGreen
            Form1.Label10.BackColor = Color.LimeGreen
            Form1.Label11.BackColor = Color.LimeGreen
            Form1.Label12.BackColor = Color.LimeGreen
            Form1.Label13.BackColor = Color.LimeGreen
            Form1.Label14.BackColor = Color.LimeGreen

如何可以变得简单?VB可以控件组,但NET我不太懂,求指点!谢谢
         For i As Integer = 1 To 14
            Form1.(& "Label" & i).backcolor = Color.LimeGreen
         Next
3 回复
#2
xiangyue05102016-06-15 17:12
其实也是可以定义控件数组的,不过需要对控件数组的事件进行注册
下面是一段例子(我的窗口代码较复杂,改成较简单的,改动可能会导致有一些小bug)
程序代码:

Public Class Form1

 Dim TxtFld() As TextBox

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  ……
    For i = 0 To 10
     TxtFld(i) = New TextBox
     Form1.Controls.Add(TxtFld(i)) '动态添加Textbox
     TxtFld(i).Visible = True
     TxtFld(i).Left = 160
     TxtFld(i).Top = txttop + i * 30
     TxtFld(i).ReadOnly = True
     TxtFld(i).Width = 250
     AddHandler TxtFld(i).Click, AddressOf TxtFld_Click '注册txtfld控件数组的TextChanged事件 ,目标函数TxtFld_Click
  Next
  End Sub
……
  Private Sub TxtFld_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If Not TypeOf sender Is TextBox Then Exit Sub   ’sender是TextBox 才执行
        For i = 0 To UBound(TxtFld)    '遍历控件数组,找到Sender对应的TextBox ——这个方法比较笨,可能有更好的方法
            If sender.Equals(TxtFld(i)) And InStr(LableFld(i).Text, "开始时间") > 0 And TxtFld(i).ReadOnly = False Then
               '标签为"开始时间"对应的TextBox 被点击事件的代码
            End If
        Next
    End Sub
End Class
#3
xiangyue05102016-06-15 17:20
另外还可以直接遍历控件,
程序代码:

For Each obj In Me.Controls
If TypeOf obj Is Label Then
  obj.backcolor = Color.LimeGreen
End If
Next


#4
yuk_yu2016-06-15 17:28
回复 3楼 xiangyue0510
谢谢版主,我测试试看!!再次感谢
1