动态创建了多个label控件,如何在失去焦点后重新获取到?
大家好,我有个问题,想了好久,百度搜了好多,但是仍然找不到解决方法。希望大家可以帮帮我。
是这样的,我在一个picturebox中动态创建了好多个label,但是在创建出新的label时之前的就会失去焦点,但是我的这些个label是代表一个个的方框框,我需要对他们进行拖动,改变大小的。所以失去焦点后的那几个label就不能处理了,想要问问,如何才能重新获取他们的焦点。
我在百度上了好多,也在知道提问了,但是很多人的建议就是利用控件数组。但是,麻烦的是,规定了不能用控件数组的。
请问要怎么办呢?
动态创建的代码:是放在一个button_click事件中的。
Private WithEvents objcon As VB.Label
i = 0
Set objcon = Controls.Add("VB.Label", boxname(i), PicVirtualScreen)
With objcon
.Visible = True
.Width = 2000
.Height = 2000
.Caption = "txt"
.Appearance = 0
.BorderStyle = 0
.BackStyle = 1
.BackColor = &HFF8080
.ForeColor = &HFFFFFF
.FontSize = 12
.Left = 1200
.Top = 1200
End With
i = i +1
这些个label都有mousemove ,mousedown 和mouseup事件,可以对label改变大小及拖动。
[解决办法]
controls(boxname(i)).setfocus
[解决办法]
如果不知道是哪个控件,则必须使用controls集合进行遍历,找出对象
[解决办法]
肯定可以,以下代码能正确运行:
Private Sub Form_Load()
Controls.Add "VB.Label", "Label1"
Controls.Add "VB.Label", "Label2"
With Controls("Label1")
.Visible = True
.Caption = "How do you do?"
End With
With Controls("Label2")
.Top = Controls("Label1").Top + Controls("Label1").Height
.Visible = True
.Caption = "I am Label2"
End With
End Sub
[解决办法]
运行时拖动Label,除非你编写拖动代码实现,否则是不可能的
[解决办法]
Private WithEvents objcon1 As VB.Label
Private WithEvents objcon2 As VB.Label
Private WithEvents objcon3 As VB.Label
Private WithEvents objcon4 As VB.Label
i = 0
Set objcon1 = Controls.Add("VB.Label", boxname(i), PicVirtualScreen)
Set objcon2 = Controls.Add("VB.Label", boxname(i), PicVirtualScreen)
Set objcon3 = Controls.Add("VB.Label", boxname(i), PicVirtualScreen)
那你就要这样了,每次创建的都要用不同的变量,再用不同的事件
否则你所有的对象全变成最后一个了,前面的都只是显示,变量中都变了
[解决办法]