[VB.NET]form初始化事件的解决方法,高手请进...

VB.NET源码-156个实用实例哦…… <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
form初始化事件的解决方法,高手请进...
之前我在一个窗体初始化的时候加载一幅地图,因为地图很大,所以等好久窗体才出来,现在我想先把窗体show出来再加载地图,有办法作到吗?在vb.net里是不是有show之后的事件?请高手指教,谢谢!
__________________________________________________________________________
接分,顶
__________________________________________________________________________
我也顶下,vs2003没有shown事件...可我用的是vs2003...
__________________________________________________________________________
急了,在线等...
__________________________________________________________________________
在 form 的load事件中,先
me.show
然后再加载地图
或者用多线程
__________________________________________________________________________
楼上说的是!但me.show效果可能不会太好,继续加油哦!
__________________________________________________________________________
学习...
__________________________________________________________________________
以前看过一本教程,上面说可以写几个线程,将FORM的加载和地图的加载隔离开来,但是它上面没有给出例子。

等待楼下的正解...........
__________________________________________________________________________
Imports System.Threading
...
...

Form_Load()
...
...
me.show()

Dim thLoadMap as Thread = new Thread( AddressOf funcLoadMap )
thLoadMap.Start()
end sub


private sub thLoadMap()
Loading~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
end sub
__________________________________________________________________________
pslh(pslh) 的第一种方法早就试过,窗体刷的显下就没了,肯定不行,其实用线程的方法我已经实现了,但是占了很大的cpu使用率,希望楼下的能给我一个其它方法,同时也感谢楼上,结帖子时加分...
__________________________________________________________________________
难道,你装载的时候占用时间和cpu的分配不正式空间度和时间度的问题么?
__________________________________________________________________________
其实加载几副地图,用线程我怕不稳定,其实感觉这种情况也没必要用线程,肯定有其它的方式...
__________________________________________________________________________
那用Form的Activated事件试试吧,不过要做 IsLoaded 判断,如果 Load 过了,就不要重新再Load 了,因为这个事件会在窗体显示的时候激发(隐藏、最小化后再显示也一样)

Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated
__________________________________________________________________________
我觉得还是线程好一些。线程不会让你感觉程序假死在那里,线程锁来保证你的稳定不就可以了?
__________________________________________________________________________
试试doevents
__________________________________________________________________________
另外写一个加载的方法,然后调用之前DoEvents
__________________________________________________________________________
楼主说道:

之前我在一个窗体初始化的时候加载一幅地图,因为地图很大,所以等好久窗体才出来,现在我想先把窗体show出来再加载地图,有办法作到吗?在vb.net里是不是有show之后的事件?请高手指教,谢谢!
--------------------

对于这种情况,我的做法是Form_Load的时候打开一个Timer,定时3秒,Timer超时的时候去做费劲的工作。

当然,这只能解决窗体第一次显示不刷新的问题。
当费劲工作开始执行时,窗体仍然会延迟响应。
要彻底解决UI的慢反应,只能使用另一个后台工作者线程。
__________________________________________________________________________
要不整个读数据的进度条 呵呵
__________________________________________________________________________
GGDFGFGFGF
__________________________________________________________________________
添加一个Timer(或是Thread),Form_Load事件中启动Timer,Timer的时间设的短些(如20),在线程中进行加载图。
这样读取是在其他线程中进行的,不会卡到Form线程。
__________________________________________________________________________
不建议用Theard,试试BackgroudWorker组件
__________________________________________________________________________
关注中
__________________________________________________________________________
只能说帖子的生命力好强呀!
__________________________________________________________________________
地图=图片?

预先将地图切割成适当大小的 n*m 块(以可以快速载入为准),初始显示时只要载入左上角的几块。
拖动滚动条时很容易算出需要显示的是哪几块,尚未载入的就载入,已载入的就用现成的,除非物理内存消耗得太厉害,否则无论多大得地图速度都慢。
__________________________________________________________________________
少打字了:否则无论多大得地图速度都不慢
__________________________________________________________________________
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值