关于vb窗体加载的问题
我在窗体上画了一个picture1,想在窗体加载时就可以在picture1上画出直线,所以在窗体的load事件中写了以下代码:ConstSTART=14Picture1....
我在窗体上画了一个picture1,想在窗体加载时就可以在picture1上画出直线,所以在窗体的load事件中写了以下代码:
Const START = 14
Picture1.Scale (0, 0)-(START, START)
For i = 0 To START
Picture1.Line (i, 0)-(i, START)
Next i
For j = 0 To START
Picture1.Line (0, j)-(START, j)
Next j
可是运行后picture1上什么也没有,但将上述代码写在窗体的click事件中(load事件不写),运行后,单击窗体,picture1可以画出直线。?????? 展开
Const START = 14
Picture1.Scale (0, 0)-(START, START)
For i = 0 To START
Picture1.Line (i, 0)-(i, START)
Next i
For j = 0 To START
Picture1.Line (0, j)-(START, j)
Next j
可是运行后picture1上什么也没有,但将上述代码写在窗体的click事件中(load事件不写),运行后,单击窗体,picture1可以画出直线。?????? 展开
3个回答
展开全部
画线之前加上一句...
Picture1.AutoRedraw = True
问题分析:
Form的Load事件是优先于Visible=True的,也就是说,在窗体显示出来之前,Form_Load事件已经被执行了..也就是线已经画好了,还没显示出来
但是默认状态下,Picture1画上去的东西是不会自动重绘的,这种情况也会出现在窗体被遮挡之后,被遮挡的部分也不会重新显示,只有AutoRedraw 设置为True的时候,才会自动重新绘制...否则需要手动刷新
Picture1.AutoRedraw = True
问题分析:
Form的Load事件是优先于Visible=True的,也就是说,在窗体显示出来之前,Form_Load事件已经被执行了..也就是线已经画好了,还没显示出来
但是默认状态下,Picture1画上去的东西是不会自动重绘的,这种情况也会出现在窗体被遮挡之后,被遮挡的部分也不会重新显示,只有AutoRedraw 设置为True的时候,才会自动重新绘制...否则需要手动刷新
展开全部
Private Sub Form_Load()
Picture1.AutoRedraw = True '加此句
Const START = 14
Picture1.Scale (0, 0)-(START, START)
For i = 0 To START
Picture1.Line (i, 0)-(i, START)
Next i
For j = 0 To START
Picture1.Line (0, j)-(START, j)
Next j
End Sub
主要原因不是楼上说的“Form_Load事件早于Picture1控件的加载”
Form_Initialize事件中已经加载了picture控件 而Load比initalize晚
picture上的图形显示不出来 主要是因为没有设置持续性输出 当窗体显示时 picture上的内容被重绘了
Picture1.AutoRedraw = True '加此句
Const START = 14
Picture1.Scale (0, 0)-(START, START)
For i = 0 To START
Picture1.Line (i, 0)-(i, START)
Next i
For j = 0 To START
Picture1.Line (0, j)-(START, j)
Next j
End Sub
主要原因不是楼上说的“Form_Load事件早于Picture1控件的加载”
Form_Initialize事件中已经加载了picture控件 而Load比initalize晚
picture上的图形显示不出来 主要是因为没有设置持续性输出 当窗体显示时 picture上的内容被重绘了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将代码放入 Private Sub Form_Activate()中。
因为Form_Load事件早于Picture1控件的加载,所以Form_Load事件无法完成对后加载的Picture1画图。而Form_Activate事件是在Form上所有控件加载完成后才激活,所以能对控件Picture1上画图。
因为Form_Load事件早于Picture1控件的加载,所以Form_Load事件无法完成对后加载的Picture1画图。而Form_Activate事件是在Form上所有控件加载完成后才激活,所以能对控件Picture1上画图。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询