首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

动态创建了多个label控件,怎么在失去焦点后重新获取到

2012-02-02 
动态创建了多个label控件,如何在失去焦点后重新获取到?大家好,我有个问题,想了好久,百度搜了好多,但是仍然

动态创建了多个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)
那你就要这样了,每次创建的都要用不同的变量,再用不同的事件

否则你所有的对象全变成最后一个了,前面的都只是显示,变量中都变了

[解决办法]

探讨

引用:
谁规定了不能用控件数组?
为什么规定了不能用控件数组?


老师。
他说不要用......

热点排行