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

怎么在winform程序导入东西,等待的时候做一个圆圈转的功能。在线等~!。

好像设计到多线程和委托。这两个技术都没用过 。。。求大神指点啊~~!!! --------------------编程问答-------------------- http://www.codeproject.com/Articles/30625/Circular-Progress-Indicator --------------------编程问答-------------------- 可使用BackgroundWorker组件。
0.前台显示滑动进度或者转圈的等待。
1.调用 BackgroundWorker的RunWorkerAsync方法开始后台线程
2.BackgroundWorker引发DoWork事件,你在DoWork事件中运行后台线程的过程
3.后台线程的过程通过ReportProgress方法报告进度(这是后台进程与前台界面响应的通道,后台进程不可直接操纵界面上的组件,如有必要需要用委托,通过窗口的Invoke方法在其线程中调用被委托的用来操作界面的函数,但使用BackgroundWorker时不要这样做)。如果是转圈的等待(不显示进度),忽略此步骤。
4.报告进度将引发BackgroundWorker组件的ProgressChanged事件,你可以将转圈的等待或滑动进度变为具体的进度指示(可以在此事件中直接操作界面的组件,比如进度条等)。
5.后台进程执行完毕
6.引发BackgroundWorker组件的RunWorkerCompleted事件。此事件也可直接操作界面上的组件,隐藏转圈的提示和进度条。
--------------------编程问答-------------------- 使用BackgroundWorker是用不到委托的概念的。但要注意doWork事件过程不要操作界面(如果非要这么做,也要用委托,但这样BackgroundWorker的使用就没什么意义了)
如果不希望使用BackgroundWorker则可直接使用System.Threading。
0.前台显示滑动进度或者转圈的等待。
1.创建一个ThreadStart实例指示要在后台线程运行的函数。
2.通过ThreadStart创建一个Thread实例(线程)
3.Thread.Start。
后台线程就会运行ThreadStart指定的函数(执行你要等待的工作)。
但是,后台线程过程结束后,并不会有什么事件通知界面,因此,就需要在后台程序的执行函数中主动通知界面,这就产生了一个问题,其它的线程调用界面的组件,即跨线程调用组件。
不要直接地跨线程调用组件,会导致组件的不一致性,因此需要在后台线程中使用组件所在的窗口的invoke方法进行调用。此时你会发现,函数名是不能直接拿来当参数的,使用委托可以做到调用指定的函数。
因此:
1.把要在后台线程操作主线程的动作封装个函数
private void 停止转圈()
{
窗口1.转圈.停止();
}
2.为了能通过参数调用这个函数,弄个委托。最简单的,是使用Action或Fun。
private Action 停止转圈的委托=停止转圈;
3.在后台线程的过程中:
窗口1.invoke(停止转圈的委托);

这相当于在后台线程中通过委托实现了在窗口1的线程中调用停止转圈的过程。实现了跨线程的界面组件的访问。 --------------------编程问答-------------------- 至于转圈,下面这个图片估计你会感兴趣的。
--------------------编程问答--------------------
引用 4 楼 u012592437 的回复:
至于转圈,下面这个图片估计你会感兴趣的。


要是已经切好图标更好。 --------------------编程问答--------------------
引用 5 楼 sp1234 的回复:
Quote: 引用 4 楼 u012592437 的回复:

至于转圈,下面这个图片估计你会感兴趣的。


要是已经切好图标更好。

呵呵,这个是Windows系统的原生图片,在 imageres.dll 中。 --------------------编程问答--------------------
引用 6 楼 u012592437 的回复:
呵呵,这个是Windows系统的原生图片,在 imageres.dll 中。

不管它在哪里,我是从“另一种技术解决方案”来说的,而不是从“只能盲目抄、不能独立设计”来说的。 --------------------编程问答--------------------
引用 7 楼 sp1234 的回复:
Quote: 引用 6 楼 u012592437 的回复:

呵呵,这个是Windows系统的原生图片,在 imageres.dll 中。

不管它在哪里,我是从“另一种技术解决方案”来说的,而不是从“只能盲目抄、不能独立设计”来说的。

嗯。其实我的意思是,如果要做原生外观的应用程序,应当还是遵照系统外观设计。这个图片最好是用API从Imageres.DLL直接读出。现在,严格实现原生外观的程序越来越少了。桌面花花绿绿的。
另外,微软的皮肤系统好像一直都是喜欢用这种连接的图片。 --------------------编程问答-------------------- 随便在网页上找一个,然后放到一个pic控件,放入一个form,在执行程序时(线程执行),弹出form就可以了
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,