vb关于动态添加的控件如何调用
正如上面的代码,通过点击command1生成id为newtext和一个序号的textbox,比如说我点了三下,就生成了三个。然后我想点击command2用msgbox输出...
正如上面的代码,通过点击command1生成id为newtext和一个序号的textbox,比如说我点了三下,就生成了三个。然后我想点击command2用msgbox输出newtext1.text,如果写成 msgbox newtext1.text可是不行。错误代码42,要求对象。如果写成我图中的代码那么输出的是newtext3.text,因为他是最后生成的。
想请教大神如何能完成我的想法。我也想过控件数组,不过如果我点击很多下控件数组可能就不够了,所以才考虑动态添加。求大神帮帮忙!
Private j As Integer
Private WithEvents txt As TextBox
Private Sub Command1_Click()
Dim q As TextBox
j = j + 1
If txt Is Nothing Then
Set txt = Me.Controls.Add("vb.textbox", "newtext" & j)
txt.Move Form1.Left + 200, Form1.Top + 200
MsgBox "1"
MsgBox "newtext" & j
Else
Set q = txt
MsgBox "2"
Set txt = Me.Controls.Add("vb.textbox", "newtext" & j)
txt.Move q.Left, q.Top + q.Height + 200
End If
txt.Text = "成功了!" & j
txt.Visible = True
End Sub
Private Sub Command2_Click()
MsgBox txt.text
End Sub 展开
想请教大神如何能完成我的想法。我也想过控件数组,不过如果我点击很多下控件数组可能就不够了,所以才考虑动态添加。求大神帮帮忙!
Private j As Integer
Private WithEvents txt As TextBox
Private Sub Command1_Click()
Dim q As TextBox
j = j + 1
If txt Is Nothing Then
Set txt = Me.Controls.Add("vb.textbox", "newtext" & j)
txt.Move Form1.Left + 200, Form1.Top + 200
MsgBox "1"
MsgBox "newtext" & j
Else
Set q = txt
MsgBox "2"
Set txt = Me.Controls.Add("vb.textbox", "newtext" & j)
txt.Move q.Left, q.Top + q.Height + 200
End If
txt.Text = "成功了!" & j
txt.Visible = True
End Sub
Private Sub Command2_Click()
MsgBox txt.text
End Sub 展开
1个回答
展开全部
控件数组 可以有32768个控件元素 你可以点3万多下 放心使用不会不够,实在不够,换个控件名称不就又有3万多个了么
追问
那我不是需要事先在窗体上添加么,我不想事先添加,因为我不知道我会点多少下,真点3w多下,事先添3w多个也麻烦啊
追答
添加一个textbox控件即可 index属性设置为0
Dim i As Integer
Private Sub Command1_Click()
i = i + 1
Load Text1(i)
Text1(i).Visible = True
Text1(i).Top = Text1(i - 1).Top + Text1(i).Height
Text1(i).Text = Now
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询