我有一个表单显示进度消息,因为一个相当长的过程运行.这是对Web服务的调用,因此我无法真正显示进度条上的百分比完整数字.(我不特别喜欢进度条的Marquee属性)
我想展示一个动画GIF,让过程感受到一些活动(例如,从一台计算机飞到另一台计算机的文件,如Windows复制过程).
你怎么做到这一点?
这不是太难.
将图片框放到表单上.
将.gif文件添加为图片框中的图像
加载时显示图片框.
需要考虑的事项:
禁用图片框将阻止gif动画.
GIF动画:
如果您正在寻找GIF动画,可以在这里生成它们
另一种方式:
我发现的另一种方法非常好用的是我在代码项目中找到的异步对话框控件
我有同样的问题.整个表单(包括gif)由于在后台运行的长时间操作而停止重绘.这是我如何解决这个问题.
private void MyThreadRoutine() { this.Invoke(this.ShowProgressGifDelegate); //your long running process System.Threading.Thread.Sleep(5000); this.Invoke(this.HideProgressGifDelegate); } private void button1_Click(object sender, EventArgs e) { ThreadStart myThreadStart = new ThreadStart(MyThreadRoutine); Thread myThread = new Thread(myThreadStart); myThread.Start(); }
我只是创建了另一个线程来负责这个操作.感谢这个初始形式继续重绘而没有问题(包括我的gif工作).ShowProgressGifDelegate和HideProgressGifDelegate是表单的委托,它将pictureBox的可见属性设置为gif为true/false.
请注意,在Windows中,您传统上不使用动画Gif,但使用AVI动画:只有一个Windows本机控件才能显示它们.甚至还有将GIF动画转换为AVI的工具(反之亦然).