vb 用命令创建控件

我在一个vb的窗体上想创建一列共计50个label控件。以后在使用中会有些不用的。我想的是,是不是可以用代码来创建text,label这类的控件,而不用提前把这些控件从工... 我在一个vb的窗体上想创建一列共计50个label控件。以后在使用中会有些不用的。我想的是,是不是可以用代码来创建text,label这类的控件,而不用提前把这些控件从工具栏里面拖到窗口上。或者是我提前把50个label拖到窗口上,但是我一列整齐的排列下来,长度不够啊,要是右边能加一个滚动条也行。谢谢,不知道我说的清楚不?
不是说复制问题,,是说如何才能通过一个循环,我用好多就创建好多,或者是能怎么样,让我多一条上下的滚动条。其它不用的我可以自己隐藏掉?
展开
 我来答
刀成朝1
2009-05-12 · TA获得超过1334个赞
知道大有可为答主
回答量:763
采纳率:0%
帮助的人:696万
展开全部
'解决滚动条问题,2个Frame,Frame2在Frame1上面
'一个VScroll1,Label1(0)在Frame2上面
Option Explicit
Dim N As Integer
Private Sub Command1_Click()
On Error Resume Next
Dim i As Integer, lngLabelH As Long, lngLabelTop As Long
lngLabelH = Label1(0).Height + 100
lngLabelTop = Label1(0).Top + lngLabelH
N = Val(InputBox("你想创建多少个控件?"))
For i = 1 To N
Load Label1(i)
Set Label1(i).Container = Frame2
Label1(i).Move Label1(0).Left, lngLabelTop
Label1(i).Visible = True
Label1(i).Caption = i & "/" & N
lngLabelTop = lngLabelTop + lngLabelH
Next i
If lngLabelTop > Frame2.Height Then
Frame2.Height = lngLabelTop + 100
VScroll1.Max = (Frame2.Height - Frame1.Height) \ lngLabelH
VScroll1.Visible = True
Else
VScroll1.Max = 0
VScroll1.Visible = False
End If
End Sub
Private Sub Command2_Click()
'自己去完善删除控件后 滚动条的处理
End Sub
Private Sub Form_Load()
Command1.Caption = "创建控件数组"
Command2.Caption = "删除标签控件"
Frame2.Move 0, 0, Frame1.Width, Frame1.Height
Frame1.Caption = ""
Frame1.BorderStyle = 0
Frame2.Caption = ""
Frame2.BorderStyle = 0
VScroll1.Visible = False
VScroll1.Min = 0
VScroll1.Max = 0
End Sub

Private Sub VScroll1_Change()
Frame2.Top = -VScroll1.Value * (Label1(0).Height + 100)
End Sub
a65702300
2009-05-12 · TA获得超过260个赞
知道小有建树答主
回答量:826
采纳率:0%
帮助的人:283万
展开全部

只有用控件数组了,首先创建一个控件,比如说Label1,然后给它的index属性取一个值,一般取0或1(我们就取0吧) 

然后添加2个命令按纽command1,command2 

最后写如下代码(我仅仅是举个例子,具体位置你自己去改) 

Option Explicit: Dim i As Integer, n As Integer 

Private Sub Command1_Click() 

n = Val(InputBox("你想创建好多个控件?")) 

For i = 1 To n 

Load Label1(i) 

Label1(i).Left = Label1(i - 1).Left 

Label1(i).Top = Label1(i - 1).Top + 800 

Label1(i).Visible = True 

Next i 

End Sub 

Private Sub Command2_Click() 

On Error Resume Next 

Dim m As Integer 

m = Val(InputBox("你想删除1~" & i - 1 & "中的哪个成员?")) 

Unload Label1(m) 

If m = 0 Then MsgBox "不能卸载设计时创建的控件" 

End Sub 

Private Sub Form_Load() 

Command1.Caption = "创建控件数组" 

Command2.Caption = "删除除设计阶段" & vbLf & "以外的任何一个成员" 

End Sub

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zeropower_ts
推荐于2016-03-27 · TA获得超过125个赞
知道答主
回答量:128
采纳率:0%
帮助的人:0
展开全部
你可以利用LOAD命令来实现控件的装入(应该叫控件数组)
一般的控件都有Visible属性来控制可见不可见。

用TEXT控件说吧。
在form上建立一个TEXT控件。

text控件属性如下:
index=0
name=text1

再建立一个COMMAND空间。CLICK事件中添加
For i = 1 To 20
Load Text1(i)
Text1(i).Top = i * 100
Text1(i).Visible = True
Next i
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jkcrow
2009-05-12 · TA获得超过476个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:540万
展开全部
在VB中可以在程序运行时,通过Load方法添加或建立控件数组,通过unloads法删除数组中的某个控件。
(1)在窗体上画出某个控件,设置该控件的Index属性值为0,表示该控件为数组;也可以进行控件名的属性设置,这是建立的第1个元素。
(2)在编程时通过Load方法,添加其余若干个元素,也可以通过unload方法,删除某个添加的元素。
(3)每个新添加的控件,通过Ieft和top属性确定其在窗体的位置,并将Visible属性设置为True。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Worsley_Barbar
2009-05-12 · TA获得超过313个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:0
展开全部
jkcrow说的很对。
常规做法是一次性加载一定数量控件数组,不够的时候增加,够了不削减(需要隐藏则隐藏)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式