实现winfrom进度条及进度信息提示,winfrom程序假死处理

 功能描述:本方法实现进度条显示,方法执行信息反馈显示。用到的技术点为 线程与代理。
     
    步骤一:添加主页面。
      
实现winfrom进度条及进度信息提示,winfrom程序假死处理 - china_xuhua - 许华
 
控件名称:
button1;
 
  步骤二:主页面后台代码
        using System.Threading;//引用此命名
 
        //创建代理。
        private Form6 myProcessBar = null;//弹出的子窗体(用于显示进度条)
        private delegate bool IncreaseHandle(int nValue,string vinfo);//代理创建
        private IncreaseHandle myIncrease = null;//声明代理,用于后面的实例化代理
        private int vMax = 100;//用于实例化进度条,可以根据自己的需要,自己改变
 
        private void button1_Click(object sender, EventArgs e)
        {
            Thread thdSub = new Thread(new ThreadStart(ThreadFun));
            thdSub.Start();
        }
        private void ThreadFun()
        {
            MethodInvoker mi = new MethodInvoker(ShowProcessBar);
            this.BeginInvoke(mi);
            Thread.Sleep(100);
            object objReturn = null;
            for (int i = 0; i < vMax; i++)
            {
//该段方法可以放在具体的执行顺序里执行
                objReturn = this.Invoke(this.myIncrease, new object[] { 2, i.ToString() + "\r\n" });
                Thread.Sleep(50);
            }
        }
        private void ShowProcessBar()
        {
            myProcessBar = new Form6(vMax);
            myIncrease = new IncreaseHandle(myProcessBar.Increase);
            myProcessBar.ShowDialog();
            myProcessBar = null;
        }
 
步骤三:创建子窗体
实现winfrom进度条及进度信息提示,winfrom程序假死处理 - china_xuhua - 许华
 控件名称:
progressBar1;textBox1
 
步骤四:子窗体,后台代码
        public Form6(int vMax)
        {
            InitializeComponent();
            this.progressBar1.Maximum = vMax;
        }
        public bool Increase(int nValue,string nInfo)
        {
            if (nValue > 0)
            {
                if (progressBar1.Value + nValue < progressBar1.Maximum)
                {
                    progressBar1.Value += nValue;
                    this.textBox1.AppendText(nInfo);
                    Application.DoEvents();
                    progressBar1.Update();
                    progressBar1.Refresh();
                    this.textBox1.Update();
                    this.textBox1.Refresh();
                    return true;
                }
                else
                {
                    progressBar1.Value = progressBar1.Maximum;
                    this.textBox1.AppendText(nInfo);
                    //this.Close();//执行完之后,自动关闭子窗体
                    return false;
                }
            }
            return false;
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# WinForms 中,可以使用 ProgressBar 控件来实现进度条功能。下面是一个简单的示例代码,演示如何创建和使用进度条: 1. 首先,在你的窗体上添加一个 ProgressBar 控件。你可以在设计视图中直接拖拽该控件到窗体上,或者通过代码动态创建该控件并将其添加到窗体中。 2. 在窗体的代码中,你可以使用 ProgressBar 控件的 Value 属性来设置当前进度的值。通常,该属性的值应介于 Minimum 和 Maximum 之间。你可以通过修改这两个属性来调整进度条的最小和最大值。 3. 若要更新进度条的值,你可以使用 ProgressBar 控件的 Increment 方法来增加当前值。你还可以直接设置 Value 属性来确切指定进度。 下面是一个简单的示例代码,演示如何使用进度条控件: ```csharp using System; using System.Threading; using System.Windows.Forms; namespace ProgressBarExample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void buttonStart_Click(object sender, EventArgs e) { // 设置进度条的最小值和最大值 progressBar.Minimum = 0; progressBar.Maximum = 100; // 模拟耗时操作 for (int i = 0; i <= 100; i++) { // 更新进度条的值 progressBar.Value = i; // 延迟一段时间,以展示进度条的更新 Thread.Sleep(100); } // 完成后显示消息框 MessageBox.Show("操作已完成!"); } } } ``` 在上面的示例中,我们在按钮的 Click 事件处理程序中模拟了一个耗时操作,并使用进度条控件来展示操作的进度。注意,在实际的应用程序中,你需要根据具体的需求和业务逻辑来更新进度条的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值