当前位置:  开发笔记 > 编程语言 > 正文

Windows Forms ProgressBar:启动/停止选框的最简单方法?

如何解决《WindowsFormsProgressBar:启动/停止选框的最简单方法?》经验,为你挑选了4个好方法。

我正在使用C#和Windows Forms.我有一个正常的进度条在该程序中正常工作,但现在我有另一个操作,其中持续时间不容易计算.我想显示一个进度条,但不知道启动/停止滚动选框的最佳方法.我希望有一些简单的东西,如设置选取框速度,然后有一个start()和stop(),但它看起来并不那么简单.我必须在后台运行一个空循环吗?我该如何做到最好?谢谢



1> Paul Fisher..:

使用样式设置为的进度条Marquee.这代表了一个不确定的进度条.

myProgressBar.Style = ProgressBarStyle.Marquee;

您还可以使用该MarqueeAnimationSpeed属性设置在您的进度条上为小块颜色设置动画所需的时间.


如果未启用"视觉样式",则"Marquee"将不会呈现.要启用`Application.EnableVisualStyles();`

2> 小智..:

要开始/停止动画,您应该这样做:

开始:

progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed = 30;

停止:

progressBar1.Style = ProgressBarStyle.Continuous;
progressBar1.MarqueeAnimationSpeed = 0;


停止时不需要设置`MarqueeAnimationSpeed`,启动时它通常具有合理的值.每次启动时无需设置.

3> Hans Passant..:

这不是他们的工作方式.您可以通过使其显示来"启动"选框样式进度条,然后通过隐藏它来停止它.您可以更改Style属性.



4> Arda Basoglu..:

此代码是登录表单的一部分,用户在等待身份验证服务器响应.

using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace LoginWithProgressBar
{
    public partial class TheForm : Form
    {
        // BackgroundWorker object deals with the long running task
        private readonly BackgroundWorker _bw = new BackgroundWorker();

        public TheForm()
        {
            InitializeComponent();

            // set MarqueeAnimationSpeed
            progressBar.MarqueeAnimationSpeed = 30;

            // set Visible false before you start long running task
            progressBar.Visible = false;

            _bw.DoWork += Login;
            _bw.RunWorkerCompleted += BwRunWorkerCompleted;
        }

        private void BwRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            // hide the progress bar when the long running process finishes
            progressBar.Hide();
        }

        private static void Login(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            // emulate long (3 seconds) running task
            Thread.Sleep(3000);
        }

        private void ButtonLoginClick(object sender, EventArgs e)
        {
            // show the progress bar when the associated event fires (here, a button click)
            progressBar.Show();

            // start the long running task async
            _bw.RunWorkerAsync();
        }
    }
}    

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有