精华内容
下载资源
问答
  • c# 进度条

    2020-05-23 12:38:33
    #region 进度条 /// <summary> /// 调用进度条 /// </summary> public void ShowWaitForm() { form = new WaitForm(); form.SetText("资料上传", "正在执行上传..."); form.TopMost = true; form....

     

    using System.Threading;

     

    #region 进度条
    /// <summary>
    /// 调用进度条
    /// </summary>
    public void ShowWaitForm()
    {
    form = new WaitForm();
    form.SetText("资料上传", "正在执行上传...");
    form.TopMost = true;
    form.StartPosition = FormStartPosition.CenterScreen;
    form.Load += (ob, ev) =>
    {
    Thread threadCheck = new Thread(Upload);
    threadCheck.SetApartmentState(ApartmentState.STA);
    threadCheck.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
    threadCheck.Start();
    };
    form.ShowDialog();
    }

    #endregion

    展开全文
  • C#进度条

    2019-03-29 16:29:43
    public partial class TransmissionSchedule : Form { public double CompletedNumber = 0; public double AllNumber = 0; public byte[] buffer = new byte[1024 * 1024 * 102...

        public partial class TransmissionSchedule : Form
        {
            public double CompletedNumber = 0;
            public double AllNumber = 0;
    
            public byte[] buffer = new byte[1024 * 1024 * 1024];
            public FileStream fsRead;
            public Socket SocketAccept;
    
            Thread fThread;
            public TransmissionSchedule()
            {
                InitializeComponent();
                this.progressBar1.Minimum = 0;
                this.progressBar1.Maximum = 100;
            }
    
            private delegate void SetPos(double ipos, string vinfo);//代理
            private void SetTextMesssage(double ipos, string vinfo)
            {
                if (this.InvokeRequired)
                {
                    SetPos setpos = new SetPos(SetTextMesssage);
                    this.Invoke(setpos, new object[] { ipos, vinfo });
                }
                else
                {
                    this.label1.Text ="进度: "+ ipos.ToString() + "%";
                    this.progressBar1.Value = Convert.ToInt32(ipos);
                    this.textBox1.AppendText(vinfo);
    
                    if (ipos == 100)
                    {
                        Thread.Sleep(1000);
                        fThread.Abort();                  
                        MessageBox.Show("传输完成!");
                        this.Close();
                    }
                }
            }
    
            private void SleepT()
            {
                double send = 0; //发送的字节数 
                double length = fsRead.Length;
                while (true)  //大文件断点多次传输
                {
                    int r = fsRead.Read(buffer, 0, buffer.Length);
                    if (r == 0)
                    {
                        break;
                    }
                    if(buffer.Length!=0)
                    {
                        SocketAccept.Send(buffer, 0, r, SocketFlags.None);
                    }
                    send += r;
    
                    if (send != 0 && length != 0)
                    {
                        double i = Math.Round(send / length, 2);
                        SetTextMesssage(Math.Round(send / length * 100, 2), send.ToString() + "\r\n");
                    }
                }
            }
    
            public void start()
            {
                //SleepT();
            }
    
            private void TransmissionSchedule_Load(object sender, EventArgs e)
            {
                Thread.Sleep(20);
                fThread = new Thread(new ThreadStart(SleepT));
                fThread.IsBackground = true;
                fThread.Start();
            }
        }

     

    展开全文
  • C# 进度条

    2018-07-19 10:01:00
    启动进度条线程 System.Threading.Thread thread = new System.Threading.Thread( new System.Threading.ThreadStart(NumberIncrement)); thread.Start(); Application.DoEvents(); } public void...
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    
    namespace ProgressBar
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                this.progressBar1.Visible = false;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                this.progressBar1.Visible = true;
                this.llabelProcess.Visible = true;
                // 启动进度条线程
                System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(NumberIncrement));
                thread.Start();
                Application.DoEvents();
                
    
            }
            
            public void NumberIncrement()
            {
                 EventHandler eh = new EventHandler(DisplayNumber(), pList);//启用一个委托,跳回UI线程.
                 try
                 {
                     this.Invoke(eh, new object[] { null, null });//执行委托
                 }
                 catch (System.Exception ex)
                 {
     
                 }
            }
    
            public void DisplayNumber(object sender, EventArgs e)
            {
                for (int i = 1; i <= 100; i++)
                {
                    SetProcessValue("测试中...", i);
                    Thread.Sleep(50);
                }
            }
    
            //设置进度条显示
            public void SetProcessValue(string TitleName, int value)
            {
                this.progressBar1.Tag = TitleName;
                string str = value.ToString() + "%";
                Font font = new Font("Times New Roman", (float)11, FontStyle.Regular);
                PointF pt = new PointF(this.progressBar1.Width / 2 - 10, this.progressBar1.Height / 2 - 10);
                this.progressBar1.Value = value;
                this.llabelProcess.Text = str;
                this.Refresh();
    
                if (value >= 100)
                {
                    MessageBox.Show("导出完成,请保存!");
                    this.button1.Enabled = true;
                    this.progressBar1.Visible = false;
                    this.llabelProcess.Visible = false;
                }
            }
        }
    }

     

    更多内容请访问 www.uusystem.com

    转载于:https://www.cnblogs.com/tianjifa/p/9334182.html

    展开全文
  • C#进度条demo.rar

    2020-11-16 17:51:33
    C#进度条ProgressBar控件,使用到了timer定时器。
  • C#进度条防假死

    2013-03-19 08:17:48
    C#进度条防假死 没有开多线程!!!C#进度条防假死 没有开多线程!!!
  • C# 进度条 动态内容

    2015-12-31 10:31:58
    C# 进度条 动态内容,这是一个Demo,拿过去你就能用,相信一定能帮助到你
  • 很漂亮的C#进度条

    2015-09-04 21:09:48
    找了好久,终于找到一款既好用又漂亮的C#进度条,有需要的朋友请拿去;
  • C#进度条实现

    千次阅读 2015-10-15 10:59:54
    C#进度条实现 实现效果,点击按钮弹出进度条窗口,并开始执行任务,在进度条及文本标签中更新任务进度,关闭进度窗口时可终止任务 实现技术,多线程(主线程更新UI,子线程处理耗时任务),委托 代码实现 定义委托,...

    C#进度条实现

    写在开头

    记得本科大二时,和老师一起做项目,那时候刚接触编程没多久,技术很烂,当时有个功能是把shapfile文件中的属性表导出至本地Excel(*xls)格式,就想着能不能做个进度条,提高一下用户体验,于是乎,就兴奋的往窗口上拖个进度条(这个最擅长),然后各种捯饬,后来终于实现了,但是发现只有当表的记录较少时,进度条才能实时更新,否则记录很多时,进度条一直不更新,直至导出完成后进度条直接满血,当时很惆怅,百度了、谷歌了,得知这叫“UI阻塞”必须另开线程才能解决,这下我更惆怅了,那时的我“闻线程色变”,这种“黑技术”我做不到啊!!!

    概述

    • 实现效果,点击按钮弹出进度条窗口,并开始执行任务,在进度条及文本标签中更新任务进度,关闭进度窗口时可终止任务
    • 实现技术,多线程(主线程更新UI,子线程处理耗时任务),委托

    代码实现

    • 定义委托,限定进度回调函数接口
    namespace Progress
    {
        public delegate void SetProgressValueEventHandler(int pos);//设置进度值的委托 定义参数列表
    }
    • MainFrm类:主界面,用于启动任务子线程,并开启进度窗口;
    namespace Progress
    {
        public partial class MainFrm : Form
        {
            public event SetProgressValueEventHandler SetProgressValueEvent;//定义事件用于回调
            public Thread ProcessThread //定义子线程用于处理耗时任务
            {
                get;
                set;
            }
    
            public MainFrm()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                ProcessThread = new Thread(new ThreadStart(HandleThread));//子线程初始化
                ProgressFrm pFrm = new ProgressFrm(this);
                ProcessThread.Start();//开启线程        
                pFrm.Show();
            }
    
            private void HandleThread()//线程处理函数,实现耗时任务
            {
                Run run = new Run();
                run.RunProgress(150, SetProgressValueEvent);
            }
        }
    }
    • Run类:耗时任务实现类,实现耗时任务的逻辑代码;
     class Run
     {
          public void RunProgress(int range, SetProgressValueEventHandler setProgressBar)
          {
             try
             {
                 for (int i = 0; i < range; i++)
                 {
                     Thread.Sleep(100);
                     //int p = 10 / (i - 10);//此处为了验证程序错误响应处理,当i=10时触发异常
                     setProgressBar(i * 100 / range);
                 }
                 setProgressBar(100);//耗时任务结束,进度条达到100;
             }
            catch (System.Exception ex)
            {
                 System.Console.WriteLine(ex.Message);
                 setProgressBar(101);//处理任务失败,向进度窗口传递消息传递值大于100或小于0的数
            }
         }
    }
    • ProgressFrm类:进度控制窗口,用于显示进度。
    namespace Progress
    {
        public partial class ProgressFrm : Form
        {
            private MainFrm mFrm;
            public ProgressFrm(MainFrm mFrm)
            {
                InitializeComponent();
                this.mFrm = mFrm;
                //绑定事件处理函数
                mFrm.SetProgressValueEvent += new SetProgressValueEventHandler(OnProgressValueChanged);
    
            }
            private void OnProgressValueChanged(int pos)//事件处理函数,设置进度条和进度值
            {
                SetProgressBarValueInvoke(pos);
                SetProgressLabelValueInvoke(pos);
            }
    
    
            private void SetProgressBarValueInvoke(int pos)//跨线程调用
            {
                if (progressBar.InvokeRequired)
                {
                    SetProgressValueEventHandler setProgress = new SetProgressValueEventHandler(SetProgressBarValue);
                    progressBar.Invoke(setProgress, new object[] { pos });
                }
                else
                {
                    SetProgressBarValue(pos);
                }
            }
           private void SetProgressBarValue(int pos)
            {
                //this.progressBar.Value = pos;
                if (pos <= progressBar.Maximum && pos >= 0)
                {
                    this.progressBar.Value = pos;
    
                }
            }
    
            private void SetProgressLabelValueInvoke(int pos)//跨线程调用
            {
                if (label.InvokeRequired)
                {
                    SetProgressValueEventHandler setProgressLabel = new SetProgressValueEventHandler(SetProgressLabelValue);
                    progressBar.Invoke(setProgressLabel, new object[] { pos });
                }
                else
                {
                    SetProgressBarLabelvalue(pos);
                }
            }
            private void SetProgressLabelValue(int pos)
            {
                if (pos <= progressBar.Maximum && pos >=0)
                {
                    if (pos == progressBar.Maximum)
                    {
                        MessageBox.Show("处理成功···", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    } 
                    else
                    {
                        this.label.Text = pos.ToString() + "%";
                    }
                }
                else
                {
                    MessageBox.Show("处理失败···", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                }
    
            }
    
    
            private void ProgressFrm_FormClosing(object sender, FormClosingEventArgs e)
            {
                try
                {
                    mFrm.SetProgressValueEvent -= new SetProgressValueEventHandler(OnProgressValueChanged);
                    mFrm.ProcessThread.Abort();
                }
                catch (System.Exception ex)
                {
    
                }
            }
        }
    }

    总结

    现在读研,项目需要C#不常用了,但我想说虽然C#的语法比C++要容易很多(这竟然成为很多人对C#口诛笔伐的缘由),之所以容易而是微软把太多东西封装了,语法虽易但其中确蕴含了更深刻的思想。

    封装意味着抽象,意味着更多需要理解的哲学思想。——室友(姜哥)

    对于我来说的便是委托/事件对C++函数指针的封装,研究了很久才算理解。

    **能力有限请批评指正**

    下载地址

    C#进度条实现源码

    展开全文
  • [DefaultEvent("ProgressClick")][ToolboxBitmap(typeof(TrackBar))]public partial classProcessBar : UserControl{publicProcessBar(){//InitializeComponent();//this.SetStyle(ControlStyles.UserPaint, true);...
  • c#进度条二Demo.zip

    2020-04-01 14:40:34
    使用c#做的进度条Demo,实现winform 进度条功能,供码农们参考学习使用
  • C#进度条progressbar

    2011-12-30 23:35:06
    基于C#的自定义进度条,包含整个工程文件
  • C#进度条(带控件CNPOPSOFT.Controls.dll)
  • c#进度条异步显示.rar

    2020-08-14 16:30:05
    c# progress 异步显示 进度条 不卡死 顺畅 方便 简洁 可应用于大型数据计算、平差、分析、建模和预测
  • C#进度条实现之异步实例浅析 2009-08-17 14:36 Deckard 博客园 我要评论(0) 字号:T | T C#进度条实现之异步实例是如何实现的呢?C#进度条实现之异步实例需要注意的是什么呢?那么本文就向你介绍C#进度条实现...
  • 【小白学C#】谈谈C#多播委托因异常而终止的解决方案 一.前言 前几天,马三在与朋友闲聊技术的时候,朋友忽然抛出一个问题,把马三难倒了,本着求知的精神,回来以后马三就查阅了相关资料并做了一些实验,终于把问题搞明白...
  • C#进度条的使用

    2009-12-21 18:05:36
    C#进度条的使用及开发的情况是什么呢? 在用c#做WinFrom开发的过程中。我们经常需要用到进度条(ProgressBar)用于显示进度信息。这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死...
  • C# 进度条 加载数据真实进度条

    热门讨论 2012-06-05 10:39:06
    加载数据真实进度条,对加载的东西进度条提示
  • 实现线程处理信息时,传出处理进度值,显示到进度条中。(以前不会,在网上找了程序改着用,但是代码过于冗余复杂。现在理解相关内容后自己写了一个浅显易懂的实现方法)
  • c#进度条设置

    千次阅读 2018-07-23 10:02:32
    progressBar1.Visible = true;//设置进度条显示 progressBar1.Maximum = fileNames.Count;//设置最大值 progressBar1.Value = 0;//设置当前值 progressBar1.Step = 1;//设置没次增长多少 ...
  • c#进度条实现方法

    2020-03-07 16:35:57
    使用c#做WinFrom开发,要实现进度条效果就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息)。 1、设计界面,注意需要引用usingSystem.Threading; 控件名称分别为: ...
  • C#进度条之控制台显示浅析

    千次阅读 2010-03-25 11:00:00
    C#进度条之控制台显示是如何实现的呢?我来看看实际的实现:using System; using System.Collections.Generic;using System.Linq; using System.Text; namespace TextProgressing { { //C#进度条之控制台显示static ...
  • 根据网络资源修改编写的一个进度条控件,主要是记录开发过程。 用户可以根据自己需要修改相应代码,或直接使用控件。也可以将代码作为子能够以控件的学习资料
  • C#进度条的使用及开发浅析
  • C#开发的自定义进度条,可显示数字(百分值)。进度条色彩可自定义。并且有实例
  • 1、创建进度条窗口2、在其他窗口中调用方法ShowProcess(int percent,string message)
  • 这次来弄的是自定义view的滑动进度条,继承于AppCompatSeekBar的基础上进行二次开发。先看效果图test.gif做到以上的效果图,就可以知道,两个模式,1:就是常用的seekbar模式,然后只不过安装自己的要求改了下滑动块...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,588
精华内容 635
关键字:

c#进度条

c# 订阅