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

     

  • 相关阅读:
    d is less efficient than [0-9]
    How to navigate back to the last cursor position in Visual Studio Code?
    Is there a short-hand for nth root of x in Python 开n次方
    Disable source maps in Chrome DevTools
    Disable map files on SASS
    快速理解脏读,不可重复读,幻读
    AWR学习
    oracle set命令详解
    TimescaleDB上手和性能测试
    Centos 7.5 通过yum安装GNOME Desktop时出现:file /boot/efi/EFI/centos from install of fwupdate-efi-12-5.el7.centos.x86_64 conflicts with file from package grub2-common-1:2.02-0.65.el7.centos.2.noarch
  • 原文地址:https://www.cnblogs.com/haley24/p/11838292.html
Copyright © 2020-2023  润新知