
Set l1 = Me.Controls.Add("VB.Label", "l1")
l1.Caption = "我是动态创建的Label控件"
l1.Left = 300
l1.Top = 150
l1.Visible = True
适用于VB6
需要一点,数学知识:画个图,容易理解:
如图分析:
第1行第1列控件Label1(0)的Left和Top
Label1(0).Left = L
Label1(0).Top = T
Label1(0).Width = 宽
Label1(0).Height = 高
并设控件之间的行距,列举分别为:V,H
那么:
第1列 第2列 第3列
第1行 Label1(0).Left = L Label1(1).Left = L + 宽 + H Label1(2).Left = L + 2 * (宽 + H)
Label1(0).Top = T Label1(1).Top = T Label1(2).Top = T
第2行 Label1(3).Left = L Label1(4).Left = L + 宽 + H Label1(5).Left = L + 2 * (宽 + H)
Label1(3).Top = T + 高 + V Label1(4).Top = T + 高 + V Label1(5).Top = T + 高 + V
第3行 Label1(6).Left = L Label1(7).Left = L + 宽 + H Label1(8).Left = L + 2 * (宽 + H)
Label1(6).Top = T + 2*(高 + V) Label1(7).Top = T + 2*(高 + V) Label1(8).Top = T + 2*(高 + V)
第4行 Label1(9).Left = L Label1(10).Left = L + 宽 + H Label1(11).Left = L + 2 * (宽 + H)
Label1(9).Top = T + 3*(高 + V) Label1(10).Top = T + 3*(高 + V) Label1(11).Top = T + 3*(高 + V)
。。。。。。
所以:
下标为 i 的控件的 Left、Top属性为?:
确定其列号的方法:(i Mod 3) + 1,其Left属性为:Label1(i).Left = L + (i Mod 3) * (宽 + H)
确定其行号的方法:(i \ 3) + 1,其Top属性为:Label1(i).Top = T + (i \ 3) * (高 + V)
这是不可避免的,除非更换电脑硬件,让处理器及内存处理得更快,或是不要用自带的 Panel 和 Label 控件,自定义一个容器,内容自绘。卡顿主要原因:
1、控件多了,电脑必然会慢,因为在 Windows 里每个控件都相当于一个窗口,有自己的句柄,系统需要维护对应的窗口消息,那么一定会卡顿,只能缓解不能消除。
2、可以用多线程,在子线程中更新控件,通过委托的方式通知主线程,可以有效缓解卡顿的问题。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)