zoukankan      html  css  js  c++  java
  • ASP.NET 进度条的制作

    制作进度条往往分为两种:

    1. 真实的进度条,显示你进程的百分比。这样的话我的做法是给你的初始化函数里面设置几个点,分别取名是干什么的。然后在你跟新的时候进度条并会显示目前正在干什么。当然如果你的电脑很好,初始化很快的话就很难看出来,一闪而过,你可以设置System.Threading.Thread.Sleep(2000)停止两秒来看看效果。

    例子如下:

           /*****ProcessMesg为进度页面的一个label显示空间*******/

           SetCurrentThreadCulture();
                LoginProcess loginPro = new LoginProcess();
                loginPro.Show();
                loginPro.ProcessMesg.Text = "Data is initializing...";
                loginPro.Refresh();
                Messager.Instance.Start();
                loginPro.ProcessMesg.Text = "Threads is initializing...";
                loginPro.Refresh();
                loginPro.ProcessMesg.Text = "Interface is initializing...";
                loginPro.Refresh();
                //Load plugin.dll
                // PluginContent.Initialize();
                loginPro.ProcessMesg.Text = "Login to the interface...";//进度的信息
                loginPro.Refresh();//刷新界面,使Label显示最新的进度信息。
                MainForm f = new MainForm();
                Navigater.Inialize(f.TabControl);
                loginPro.Close();// 最后关闭进度界面进入主程序。
                Application.Run(f);

    2. 另外一种是在你导入数据等待的时候,你需要显示进度条,往往我们使用一张Gif图片来替代。但是我们往往明明设置了让图片的Visible=true;但是在你导入的时候就是不出现这张图片(也就是没有效果),其中主要的原因是主线程被你数据处理占用了,所以图片显示不出来。其中的解决办法是创建一个新的线程用于处理数据,主线程用于显示图片。最后使用.NET的委托来调用界面的刷新程序。

    示例代码如下:

    public partial class ImportDomBondPriceForm : Form
        {
            private DataTable dt;
            private Thread thread = null;
            private delegate void SetProcessBarUnVisibleDel();
            private SetProcessBarUnVisibleDel unvisibleDel;
            public ImportDomBondPriceForm()
            {
                InitializeComponent();
                unvisibleDel = new SetProcessBarUnVisibleDel(RunCompleted);
            }

            private DataTable LoadPreviewData(string fileName)
            {
                DataSet dataSet = ExcelReader.Read(fileName);
                if (dataSet.Tables.Count > 0)
                {
                    DataTable dTable = dataSet.Tables[0];
                    for (int i = 0; i < dTable.Columns.Count; i++)
                    {
                        if (dTable.Rows[0][i].ToString().Trim() == "")
                        {
                            dTable.Columns.RemoveAt(i);
                            --i;
                        }
                    }
                    dTable.Rows.RemoveAt(0);
                    dTable.Columns[0].ColumnName = "RecordDate";
                    dTable.Columns[1].ColumnName = "Brand Name";
                    dTable.Columns[2].ColumnName = "ISBN";
                    dTable.Columns[3].ColumnName = "Currency";
                    dTable.Columns[4].ColumnName = "Evaluation Price";
                    return dTable;
                }
                else
                {
                    return null;
                }
            }

            private void btnOpen_Click(object sender, EventArgs e)
            {
                if (DialogResult.OK == this.openFileDialog.ShowDialog())
                {
                    this.txtFileName.Text = openFileDialog.FileName;
                    RunStart();
                    thread = new Thread(Run);
                    thread.Start();
                }
            }

            private void RunCompleted()
            {
                this.pictureBox1.Visible = false;
                GVBind(dt);
            }

            private void RunStart()
            {
                this.pictureBox1.BringToFront();
                this.pictureBox1.Visible = true;
            }

            private void Run()
            {
                dt = LoadPreviewData(txtFileName.Text);
                this.Invoke(unvisibleDel);
            }

            private void GVBind(DataTable dTable)
            {
                dataGridView1.DataSource = dTable;
                dataGridView1.Columns[0].Width = 150;
                dataGridView1.Columns[1].Width = 300;
                dataGridView1.Columns[2].Width = 100;
                dataGridView1.Columns[3].Width = 50;
                dataGridView1.Columns[4].Width = 100;
            }
        }

  • 相关阅读:
    我告诉你 电脑软件工具
    mysql 查询当天、本周,本月,上一个月的数据
    springboot:springboot+mybatis多数据源最简解决方案
    MySQL数据库优化的(经典必看)
    MyBatis 的强大特性之一便是它的动态 SQL之常用属性使用
    你知道Spring 中使用了哪些设计模式?
    kafka 相关面试问题
    掌握TCP/IP的通信原理(三次握手、四次挥手)。
    jsp和servlet实现文件的上传和下载
    Java获取数据库记录通过javabean映射,并存入list集合
  • 原文地址:https://www.cnblogs.com/jin256/p/2139523.html
Copyright © 2011-2022 走看看