• 进度条(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,这样就不会出现这种问题。

     

  • 相关阅读:
    [ProjectEuler.net] 14
    Design patterns
    初等函数定义
    Design patterns 1.6 Design for change
    Programming In Haskell chapter3
    桌面恶心的无法删除的图标之 淘宝购物 删除办法
    程序员学英语三部曲
    e的给定精度求法
    Summary about Architect Visit
    再谈“我是怎么招聘程序员的”(上)
  • 原文地址:https://www.cnblogs.com/haley24/p/11838292.html
Copyright © 2020-2023  润新知