winform中进度条(ProgressBar)控件使用时UI画面显示延迟的解决

Posted haley24

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform中进度条(ProgressBar)控件使用时UI画面显示延迟的解决相关的知识,希望对你有一定的参考价值。

  winform中自带的进度条控件ProgressBar,在实际使用过程中,可能会遇到UI动画显示延迟的现象,进度已经走完,但是进度条可能才显示到一半,尤其是在一些弹出窗体中,点击确定开始执行后台操作,同时进度条显示进度,后台执行完成且成功,窗体关闭,此时UI画面的现象就是进度条才进行到一半或者70%,窗体关闭了。针对这一问题,我们可以使用自定义控件来解决,其实也就是继承自带的进度条控件,然后重写OnPoint函数。

  首先,打开解决方案,在项目中添加用户控件

  技术图片

  在类代码中继承ProgressBar,然后将OnPoint函数重写完成之后重新生成一下,就可以在工具箱中找到自定义的控件进行使用。

public partial class CustomPro : ProgressBar
{
    public CustomPro()
    {
         base.SetStyle(ControlStyles.UserPaint, true);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
         SolidBrush brush = null;
         Rectangle bounds = new Rectangle(0, 0, base.Width, base.Height);
         bounds.Height -= 4;
         bounds.Width = ((int)(bounds.Width * (((double)base.Value) / ((double)base.Maximum)))) - 4;
         brush = new SolidBrush(Color.DeepSkyBlue);
         e.Graphics.FillRectangle(brush, 2, 2, bounds.Width, bounds.Height);
    }
}

  如果重新生成之后在工具箱没有找到,不要慌,可能是你的VS设置导致。点击 工具 -- 选项 -- Windows窗体设计器 -- 常规 -- 工具箱 -- 自动填充工具箱,将这个选项设置为true,然后重新生成,工具箱里就会有刚刚写好的自定义控件。

  技术图片

 

   此时还是会有一些小问题,当你只进行项目清理而不重新生成时,使用自定义控件的窗体的设计页面会报错,报错信息的意思是未能找到自定义的控件。这里是不影响编译的,因为只要重新生成项目,这个报错就会解决。其他解决方式是将自定义控件封装在DLL中,然后在项目中引用DLL,这样就不会出现这种问题。

 

以上是关于winform中进度条(ProgressBar)控件使用时UI画面显示延迟的解决的主要内容,如果未能解决你的问题,请参考以下文章

winform 进度条

wpf web应用中,如何使用progressbar?

winform 实现单击按钮后显示进度条或等待窗口

C#winform做了个form,进度条progressbar风格是marquee,可随时更新此form上Label控件显示的信息

C# 中的 progressBar1 如何使用这个进度条控件.?

c#winform,关于进度条当前进度的计算。求助,大侠进,在线等...