相关疑难解决方法(0)

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

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

c# winforms progress-bar

71
推荐指数
4
解决办法
20万
查看次数

更改值时禁用.NET进度条动画?

我意识到关于动画和进度条的SO还有其他问题,但它们似乎围绕着摆脱进度条上绘制的动画,即.旅行的亮点.

我想要做的是摆脱我设置进度条的新值时使用的动画.我现在遇到的问题是正在运行的操作完成,然后进度条在操作完成继续增加到最大位置.

换句话说,如果我将进度条的Value属性设置为50,我希望它立即前进到中途位置(如果max是100),而不是像现在那样慢慢地将进度条建立到该位置.

如果确实有一个关于SO的问题已经处理过这个问题,那么关闭就像重复一样,我会高兴地删除它,但我找不到任何问题.

这是我发现的那个:禁用WinForms ProgressBar动画,它处理动画的高亮,这不是我所说的.

这是一个简单的LINQPad演示,它显示了这个问题:

void Main()
{
    using (var fm = new Form())
    {
        var bt = new Button
        {
            Text = "Start",
            Location = new Point(8, 8),
            Parent = fm,
        };
        var pb = new ProgressBar
        {
            Top = bt.Top + bt.Height + 8,
            Width = fm.ClientRectangle.Width - 16,
            Left = 8,
            Parent = fm
        };

        bt.Click += (s, e) =>
        {
            bt.Enabled = false;
            Thread t = …
Run Code Online (Sandbox Code Playgroud)

.net animation winforms progress-bar

21
推荐指数
2
解决办法
1万
查看次数

如何停止进度条动画?

可能重复:
禁用WinForms ProgressBar动画

我正在使用一个进度条来检测来自我们收音机的一些数据,并且它的"闪烁"是不可接受的.此外,慢速更新速率数据每次都会动画化为该值,而不是立即移动.此行为无法提供与仪器相同的视觉体验.我意识到进度条不是为了这个目的,而是它在我的工具箱中.

使用此链接中的"pause"命令不允许我继续更新该值,因为它已暂停.更改回正常,更新值然后再次暂停似乎不是一个好的解决方案.此外,默认情况下暂停变为黄色,所以除了以上所有之外,我还需要将颜色变回绿色.

有人可以建议如何关闭此动画或建议第三方'仪器工具箱'?

c# progress-bar visual-studio-2012

5
推荐指数
1
解决办法
4373
查看次数

使用async/await:await返回得太早

我有一个简单的Windows窗体应用程序,只有一个按钮和一个进度条.

然后我有这个代码:

private async void buttonStart_Click(object sender, EventArgs e)
{
    progressBar.Minimum = 0;
    progressBar.Maximum = 5;
    progressBar.Step = 1;
    progressBar.Value = 0;

    await ConvertFiles();
    MessageBox.Show("ok");
}

private async Task ConvertFiles()
{
    await Task.Run(() => 
    {
        for (int i = 1; i <= 5; i++)
        {
            System.Threading.Thread.Sleep(1000);
            Invoke(new Action(() => progressBar.PerformStep()));
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

await ConvertFiles();收益太早,确定消息框似乎已经在80%左右的进展.

我究竟做错了什么?

c# asynchronous winforms async-await progress-bar

3
推荐指数
1
解决办法
505
查看次数