我在Panel1控件中动态创建了几个控件,现在,想获取他们的名字,可是却不知道名字为什么出不来。创建的代码(已可以正常运行):
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim lblDTCS As New Label
Dim lblDYCS As New Label
Dim lblDaAn As New Label
Dim lblJieXi As New Label
Dim txtArr As New TextBox
Dim txtBrr As New TextBox
Dim txtCrr As New TextBox
Dim txtDrr As New TextBox
lblDaAn.Text = "带来"
lblJieXi.Text = "结果:"
lblDTCS.Text = "当天次数"
lblDYCS.Text = "当天次数"
txtArr.Multiline = True
txtBrr.Multiline = True
txtCrr.Multiline = True
txtDrr.Multiline = True
txtArr.Size = New Size(335, 70)
txtBrr.Size = New Size(335, 70)
txtCrr.Size = New Size(335, 70)
txtDrr.Size = New Size(335, 70)
lblDaAn.Size = New Size(41, 12)
lblJieXi.Size = New Size(41, 12)
lblDTCS.Size = New Size(65, 12)
lblDCCS.Size = New Size(65, 12) txtArr.Location = New Point(64, 135)
txtBrr.Location = New Point(64, 220)
txtCrr.Location = New Point(64, 305)
txtDrr.Location = New Point(64, 390)
lblDaAn.Location = New Point(425, 135)
lblJieXi.Location = New Point(425, 305)
lblDTCS.Location = New Point(774, 394)
lblDCCS.Location = New Point(776, 443) Me.Panel1.Controls.Add(txtArr)
Me.Panel1.Controls.Add(txtBrr)
Me.Panel1.Controls.Add(txtCrr)
Me.Panel1.Controls.Add(txtDrr)
Me.Panel1.Controls.Add(lblDaAn)
Me.Panel1.Controls.Add(lblJieXi)
Me.Panel1.Controls.Add(lblDTCS)
Me.Panel1.Controls.Add(lblDCCS) End Sub
获取的代码:(无法得到Panel1控件里刚创建的控件名称)
Private Sub ButHuoQu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButHuoQu.Click
For i As Integer = 0 To Panel1.Controls.Count - 1
txtTempYiDuo.Text = Panel1.Controls(i).Name
MsgBox(txtTempYiDuo.Text)
Next
End Sub请高手帮忙看一下是什么原因获取不成功呢?
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim lblDTCS As New Label
Dim lblDYCS As New Label
Dim lblDaAn As New Label
Dim lblJieXi As New Label
Dim txtArr As New TextBox
Dim txtBrr As New TextBox
Dim txtCrr As New TextBox
Dim txtDrr As New TextBox
lblDaAn.Text = "带来"
lblJieXi.Text = "结果:"
lblDTCS.Text = "当天次数"
lblDYCS.Text = "当天次数"
txtArr.Multiline = True
txtBrr.Multiline = True
txtCrr.Multiline = True
txtDrr.Multiline = True
txtArr.Size = New Size(335, 70)
txtBrr.Size = New Size(335, 70)
txtCrr.Size = New Size(335, 70)
txtDrr.Size = New Size(335, 70)
lblDaAn.Size = New Size(41, 12)
lblJieXi.Size = New Size(41, 12)
lblDTCS.Size = New Size(65, 12)
lblDCCS.Size = New Size(65, 12) txtArr.Location = New Point(64, 135)
txtBrr.Location = New Point(64, 220)
txtCrr.Location = New Point(64, 305)
txtDrr.Location = New Point(64, 390)
lblDaAn.Location = New Point(425, 135)
lblJieXi.Location = New Point(425, 305)
lblDTCS.Location = New Point(774, 394)
lblDCCS.Location = New Point(776, 443) Me.Panel1.Controls.Add(txtArr)
Me.Panel1.Controls.Add(txtBrr)
Me.Panel1.Controls.Add(txtCrr)
Me.Panel1.Controls.Add(txtDrr)
Me.Panel1.Controls.Add(lblDaAn)
Me.Panel1.Controls.Add(lblJieXi)
Me.Panel1.Controls.Add(lblDTCS)
Me.Panel1.Controls.Add(lblDCCS) End Sub
获取的代码:(无法得到Panel1控件里刚创建的控件名称)
Private Sub ButHuoQu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButHuoQu.Click
For i As Integer = 0 To Panel1.Controls.Count - 1
txtTempYiDuo.Text = Panel1.Controls(i).Name
MsgBox(txtTempYiDuo.Text)
Next
End Sub请高手帮忙看一下是什么原因获取不成功呢?
lblDTCS.Name = "lblDTCS"以下类推。
我这里创建的代码只是一个示范,真正在程序运行时,创建的控件名都是随机的,所以,我需要用一个循环来获取这些控件的名称,最终要实现的是把这些控件删除。随便在这里说一下,我的删除代码好象也出问题了,动态创建的label和checkbox控件都可以删除,但是textbox控件却仍显示在panel1控件里,请问一下是什么原因。删除的代码如下:
Private Sub Butcls_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Butcls.Click
For Each a As System.Windows.Forms.Control In Panel1.Controls
Panel1.Controls.Remove(a)
a.Dispose()
Next
End Sub
控件的名字你没有设置,你怎么获得name属性?群里已经说你代码有问题了 - -
Button1 里面:
Dim txt As System.Window.Form.TextBox
For i as integer = 0 to 9
txt = new System.Window.Form.TextBox
with txt
.Name = "Test" & i
.Text = .Name
.Size = New Size(100, 20)
.Location = New Point(8, 8+.Height)
End With
Panel1.Controls.Add(txt)
NextButton2 里面:
For each obj As system.window.form.Control
Msgbox(String.Format("正在删除控件 {0} 。", obj.name))
panel1.controls.remove(obj)
obj.dispose
next
msgbox("已删除所有控件")
以下为可用代码Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Me.Panel1.Controls.Count > 0 Then
MsgBox("已经增加")
Return
End If Dim obj As Control For i As Integer = 0 To 49 obj = New Label
With CType(obj, Label)
.Name = "测试" & i
.Text = .Name
.AutoSize = False
.Size = New Size(50, 20)
.Location = New Point(0, i * .Height)
.TextAlign = ContentAlignment.MiddleLeft
End With
Me.Panel1.Controls.Add(obj) obj = New TextBox
With CType(obj, TextBox)
.Name = "测试" & i
.Text = .Name
.Multiline = True
.Size = New Size(100, 20)
.Location = New Point(50, i * .Height)
.TextAlign = HorizontalAlignment.Center
End With
Me.Panel1.Controls.Add(obj) Next End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click While Me.Panel1.Controls.Count > 0
Me.Panel1.Controls.RemoveAt(0)
End While End SubEnd Class