怎么异步显示加载中 winform
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么异步显示加载中 winform相关的知识,希望对你有一定的参考价值。
这里涉及到的内容有点多了哦,不过如果把这些吃下去,winform也就过关了。首先明确需要你说的异步显示的原因,当程序中需要进行长时间的计算时,如果在主线程中进行你的窗口会卡主,显示“程序没有响应”,造成界面不友好。所以出现了主线程只做数据显示,而计算都放到其他线程中进行的思路。大致的方法如下:
在主线程中设置代理(delegate)或者事件(event)。而当子线程运算完成或者运算到某一个节点时,调用主线程窗口的代理/事件,修改主窗体的显示。这里主要涉及的知识有多线程(仅仅知道如何启动子线程就可以,不需要一开始就接触线程安全)、代理、事件。具体可以参考这篇:http://wenku.baidu.com/view/39820c366c85ec3a87c2c5ea.html 参考技术A
//跟楼上观点基本一致,给你个处理异步线程demo的关键代码:
TH_Login = new Thread(new ThreadStart(login));TH_Login.IsBackground = true;
TH_Login.Start();
private void login()
this.Invoke(new delegatePic(picbox_Loading_Show), panel2, panel3, picbox_Loading);
private delegate void delegatePic(Panel p1, Panel p2, PictureBox pb);
private void picbox_Loading_Show(Panel p1, Panel p2, PictureBox pb)
p1.Enabled = false;
p2.Enabled = false;
picbox_Loading.Visible = true;
winform中控件加载时显示背景残影的问题
我将上面的系统名称打码了哈,程序运行时 ,总会在一些控件区显示之前屏幕的残影,虽然一闪而过,但是很不美观,求助,路过的大神,这怎么解决啊
我也有这样的问题,我在窗体中加了这个方法protected override CreateParams CreateParams
get
if (OSVersionInfo.Name == "Windows XP")//Windows XP系统
return base.CreateParams;
else //Windows 7 系统
var parms = base.CreateParams;
parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
return parms;
然后系统加载时,就没有出现残影。希望能帮到你。我当时也找了好久,才解决。追问
大神 我把
这段加到我的代码里了,问题依然存在,我是用vs2005开发的,如图
我放的位置没问题吧,难道还需要修改其他配置吗?求高手知道啊
哎~~ 这个就不知道了 。上面的OSVersionInfo是一个类名,如果你需要这个类,我可以给你。不知道是不是这个原因。7点我就不在线了。本来想粘贴上去,可是代码太多。无法提交!
追问啊 谢谢哈 ,方便时发我一下呗 541610862
以上是关于怎么异步显示加载中 winform的主要内容,如果未能解决你的问题,请参考以下文章