当前位置:编程学习 > C#/ASP.NET >>

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 块(以可以快速载入为准),初始显示时只要载入左上角的几块。
拖动滚动条时很容易算出需要显示的是哪几块,尚未载入的就载入,已载入的就用现成的,除非物理内存消耗得太厉害,否则无论多大得地图速度都慢。 --------------------编程问答-------------------- 少打字了:否则无论多大得地图速度都不慢
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,