zoukankan      html  css  js  c++  java
  • 读取txt文件加DevExpress之进度条progressBarControl

    进度条使用 主要掌握下边几个命令, 

     //水平进度条
    progressBarControlH.Properties.Minimum = 0;
    //1:设置最大数量,比如读取txt文件内容,先要查出行数,然后给maxinum赋值,此处是进度条的最大容量. progressBarControlH.Properties.Maximum = 100;
    //2: 进度条的进度,读取一行,内部自动计算的

       while (sr.Peek() > -1)
                        {
                            line = sr.ReadLine().ToString().Replace("
    ", "");
                            //跳过行空格
                            if (line.Trim() != "")
                            {
                             //   progressBarControlH.Text = "开始过滤字段生成文件.....";
                             
                                //      System.Threading.Thread.Sleep(120);
                                   progressBarControlH.PerformStep();
                           //     progressBarControlH.Position += 1;
                                //    progressBarControlH.EditValue = i + 1;
                                //处理当前消息队列中的所有windows消息,不然进度条会不同步
                                System.Windows.Forms.Application.DoEvents();
    ......................}

    下边是所有的步骤,

    1:初始化进度条 ,最大值等查完txt行数赋值.

        private void panelControl1_Paint(object sender, PaintEventArgs e)
            {
                //水平进度条
                progressBarControlH.Properties.Minimum = 0;
                //progressBarControlH.Properties.Maximum = 2000000;
                progressBarControlH.Properties.Step = 1;
                progressBarControlH.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
                progressBarControlH.Position = 0;
                progressBarControlH.Properties.ShowTitle = true;
                progressBarControlH.Properties.PercentView = true;
                progressBarControlH.Properties.ProgressKind = DevExpress.XtraEditors.Controls.ProgressKind.Horizontal;
            }

    2:读取text行数

        int CalculateCount(string filepath)
            {
                //定义一个变量
                int lineCount = 0;
                //文件路径
             //   string path = @"D:SQL.txt";
                try
                {
                    using (StreamReader sr = new StreamReader(filepath))
                    {
                        //循环读取
                        while (sr.Peek() >= 0)
                        {
                            sr.ReadLine();
                            lineCount++;
                        }
                    }
                    return lineCount;
                //    this.label1.Text = "文件行数为:" + lineCount.ToString();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    return 0;
                }
            }

    3:赋值进度条最大值,并开始统计进度

       int count= CalculateCount(file);
                        lblcount.Visible = true;
                        lblcount.Text = count.ToString();
                        progressBarControlH.Properties.Maximum = count;
                        //删除后缀 存入files类Filename属性 ,后用于存在word第一行                 
                        StreamReader sr = new StreamReader(file, System.Text.Encoding.Default);
                        //    filecontents = new Queue<FileContent>();
                        String line;
                        // while (sr.EndOfStream!=true)
                        StringBuilder sb = new StringBuilder();
                        while (sr.Peek() > -1)
                        {
                            line = sr.ReadLine().ToString().Replace("
    ", "");
                            //跳过行空格
                            if (line.Trim() != "")
                            {
                             //   progressBarControlH.Text = "开始过滤字段生成文件.....";
                             
                                //      System.Threading.Thread.Sleep(120);
                                   progressBarControlH.PerformStep();
    
                           //     progressBarControlH.Position += 1;
                                //    progressBarControlH.EditValue = i + 1;
                                //处理当前消息队列中的所有windows消息,不然进度条会不同步
                                System.Windows.Forms.Application.DoEvents();

    帮助文件

    progressBarControl和marqueeProgressBarControl

    一.progressBarControl

    progressBarControl是一个进度条控件

    几个重要参数

    Minimum------------------进度最小数值

    Maximum-----------------进度最大数值

    Step----------------------每走一步的数值

    Position ------------------当前值

    EditValue-----------------编辑值

    ProgressViewStyle--------样式(其实我没看出什么区别)

    ShowTitle-----------------是否显示标题(没有设置显示百分比的时候一般显示value值)

    PercentView---------------是否显示百分比(需要ShowTitle为true)

    ProgressKind-------------进度条方向(横向/纵向),这只是进度的显示方向,具体控件还要自己把它拉成横向或者纵向

    TextOrientation-----------进度条文本显示方向(横向/纵向)

    方法

     PerformStep() -----------进度条前进一步

    添加两个进度条,一个横向,一个纵向,并初始化一下参数

    复制代码
                //水平进度条
                progressBarControlH.Properties.Minimum = 0;
                progressBarControlH.Properties.Maximum = 100;
                progressBarControlH.Properties.Step = 1;
                progressBarControlH.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
                progressBarControlH.Position = 0;
                progressBarControlH.Properties.ShowTitle = true;
                progressBarControlH.Properties.PercentView = true;
                progressBarControlH.Properties.ProgressKind = DevExpress.XtraEditors.Controls.ProgressKind.Horizontal;
                
    
    
                //垂直进度条
                progressBarControlV.Properties.Minimum = 0;
                progressBarControlV.Properties.Maximum = 100;
                progressBarControlV.Properties.Step = 1;
                progressBarControlV.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
                progressBarControlV.Position = 0;
                progressBarControlV.Properties.ShowTitle = true;
                progressBarControlV.Properties.PercentView = true;
                progressBarControlV.Properties.ProgressKind = DevExpress.XtraEditors.Controls.ProgressKind.Vertical;
                progressBarControlV.Properties.TextOrientation = DevExpress.Utils.Drawing.TextOrientation.Horizontal;
    复制代码

    当把进度条设置为纵向的时候一般需要Title或者百分比的显示还是横向的,这样看起来才舒服,所以要设置一下TextOrientation属性

    调用代码:

    复制代码
                for (int i = 0; i < 100; i++)    
                {
                    
                    
                    System.Threading.Thread.Sleep(120);
                    progressBarControlH.PerformStep();
                    progressBarControlV.PerformStep();
                    //progressBarControl1.Position +=1;
                    //progressBarControl1.EditValue = i + 1;
                    //处理当前消息队列中的所有windows消息,不然进度条会不同步
                    System.Windows.Forms.Application.DoEvents();
                }
                progressBarControlH.EditValue = 0;
                progressBarControlV.EditValue = 0;
    复制代码

    让进度条移动有三种方式

    1.改变Position的值

    2.改变EditValue的值

    3.用PerformStep方法

    不过要注意的是,这三种方式后面都要加上System.Windows.Forms.Application.DoEvents(),就是每次改变进度的时候都要让windows处理当前队列的消息,以确保进度条同步,否则可能出现进度条的数据更改了,可是进度没有动的情况

    二.marqueeProgressBarControl

    marqueeProgressBarControl用起来比较简单,但是没有ProgressBarControl的显示进度和百分比的功能

    复制代码
           marqueeProgressBarControlH.Properties.ProgressKind = DevExpress.XtraEditors.Controls.ProgressKind.Horizontal;
                marqueeProgressBarControlH.Properties.ShowTitle = true;
                marqueeProgressBarControlH.Text = "横向读取数据中,请稍等。。。。";
    
                marqueeProgressBarControlV.Properties.ProgressKind = DevExpress.XtraEditors.Controls.ProgressKind.Vertical;
                marqueeProgressBarControlV.Properties.ShowTitle = true;
                marqueeProgressBarControlV.Text = "纵向数据读取中,请稍等";
                marqueeProgressBarControlV.Properties.TextOrientation = DevExpress.Utils.Drawing.TextOrientation.VerticalUpwards;
    复制代码

    最后效果

  • 相关阅读:
    Numpy基本介绍
    Java中的<< 和 >> 和 >>> 详细分析
    Matplotlib绘制基本图像
    Matplotlib基本使用
    最新动态:开源项目 ionic3-awesome — 实现生成带logo二维码组件
    最新动态:开源项目 ionic3-awesome — 实现iframe嵌入外部网页
    最新动态: 开源项目 ionic3-awesome — 实现多主题功能
    Angular5强势来袭
    js中对象的拷贝,浅拷贝和深拷贝
    vue2 + element-ui + axios 开源项目推荐
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/7337603.html
Copyright © 2011-2022 走看看