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 块(以可以
快速载入为准),初始
显示时只要载入左上角的几块。 拖动滚动条时很容易算出需要
显示的是哪几块,尚未载入的就载入,已载入的就用现成的,除非物理内存消耗得太厉害,否则无论多大得地图速度都慢。 __________________________________________________________________________ 少打字了:否则无论多大得地图速度都不慢 __________________________________________________________________________
原文链接:https://www.f2er.com/vb/263464.html