进度条,怎么做?

 
public partial class Form1 : Form 
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            backgroundWorker1.WorkerSupportsCancellation = true;

        }

        long l = 1000;
        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            button2.Enabled = true;

            try
            {
                l = Convert.ToInt64(textBox1.Text);
            }
            catch
            {
            }

            backgroundWorker1.RunWorkerAsync(l);
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            backgroundWorker1.CancelAsync();
            button2.Enabled = false;
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {

            BackgroundWorker worker = sender as BackgroundWorker;
            worker.WorkerReportsProgress = true;
            e.Result = LongTimeOperation((long)e.Argument, worker, e);

        }


        private long LongTimeOperation(long maxNum, BackgroundWorker worker, DoWorkEventArgs e)
        {
            long result = 10;
            for (int i = 0; i < maxNum; ++i)
            {
                if (worker.CancellationPending)
                {
                    e.Cancel = true;
                }
                else
                {
                    result += i;

                    int percentComplete = (int)((float)i / (float)maxNum * 100);
                    worker.ReportProgress(percentComplete);
                    System.Threading.Thread.Sleep(i);
                }
            }
            return result;

        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {

            this.progressBar1.Value = e.ProgressPercentage;

        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message, "错误");
            }
            else if (e.Cancelled)
            {
                MessageBox.Show("取消了操作");
            }
            else 
            {
                MessageBox.Show("结构为:"+e.Result.ToString());
            }
            button1.Enabled = true;
            button2.Enabled = false;
            this.progressBar1.Value = 0;
        }



    }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现LabVIEW中的流动进度条,可以使用图形控制来模拟进度条的流动过程。以下是一种实现的方法: 1. 在LabVIEW的界面中添加一个图形控制——矩形(或其他形状)。 2. 将矩形的外观设置为所期望的进度条外观。可以通过调整颜色、边框宽度等属性来达到想要的效果。 3. 在LabVIEW的Block Diagram中,添加一个While循环。该循环将在程序执行期间不断运行。 4. 在While循环内部的代码中,使用适当的方法来更新矩形的位置。这可以通过更改矩形的X坐标来实现。如果需要平滑的流动效果,可以使用逐渐增加或减少X坐标的值来模拟流动。 5. 在更改完矩形位置后,使用适当的方法来使程序暂停一小段时间,以便观察到流动效果。可以使用Tick Count函数或Wait函数来达到这个目的。 6. 在While循环之外,添加一个终止条件,以便在达到目标进度或其他停止条件时停止循环。 通过以上步骤,您可以实现一个简单的流动进度条。根据需求的不同,您可以调整进度条的速度、颜色和形状等参数,以满足具体的要求。 ### 回答2: 在LabVIEW中,可以通过以下步骤来实现流动的进度条: 1. 首先,在LabVIEW的界面中放置一个进度条的控件。可以在Controls面板中找到该控件,并将其拖放到界面上适当的位置。 2. 对于流动进度条,可以使用LabVIEW中的Timer来实现定时更新。在Block Diagram中,右击空白处,选择"Timing"菜单,然后选择“Tick Count Timer”。 3. 连接Timer的“Tick Count”输出到一个“While Loop”的条件输入。这样,每当Timer更新时,While Loop都会执行一次。 4. 在While Loop中,通过计算进度条的当前位置,并将其传递给进度条的控件。可以使用“Move and Index Array”函数来实现此功能。 5. 设置进度条的最小和最大值。根据实际情况,可以调整进度条的最小值和最大值,以确保进度条的流动效果能够正确显示。 6. 根据需要,可以添加额外的功能。例如,可以在进度条流动时显示一些文字或图标,以增强用户体验。 总结:通过使用LabVIEW中的Timer、While Loop和控件的更新功能,可以实现流动的进度条。使用定时器来触发While循环的执行,然后在循环中更新进度条的位置,以达到流动的效果。 ### 回答3: LabVIEW是一种图形化编程语言,它提供了丰富的图形控件,包括进度条。要实现流动的进度条,可以按照以下步骤进行操作: 1. 打开LabVIEW,创建一个新的VI(虚拟设备)文件。 2. 在Front Panel窗口中,找到控件面板工具栏,并从中选择进度条控件。 3. 将进度条控件拖放到Front Panel窗口中。 4. 选中进度条控件,并在属性栏中调整进度条的外观和行为。可以设置进度条的颜色、宽度、最小值和最大值等属性。 5. 在Block Diagram窗口中,将进度条控件与其他模块连接,实现进度的更新。 6. 在合适的位置添加进度条的更新代码。例如,可以使用一个循环结构,每次循环更新进度条的值,并通过刷新函数更新控件的显示。 7. 根据具体应用场景,确定更新进度条的触发条件和方式。例如,可以根据任务的完成百分比来更新进度条,或者根据时间间隔来定期更新进度条。 8. 在适当的时候启动VI,观察进度条是否能够按照预期的方式流动。 需要注意的是,LabVIEW的进度条是基于事件驱动的,所以在更新进度条时要避免阻塞主线程,以保持用户界面的响应速度。可以使用多线程的技术,将更新进度条的任务放在独立的线程中进行,从而确保进度条能够流动同时不影响其他功能的正常运行。 总结来说,实现LabVIEW中流动的进度条需要在Front Panel窗口中添加进度条控件,然后在Block Diagram窗口中编写相关代码来更新进度条的值和显示。通过设置合适的更新条件和方式,可以使进度条按照预期流动。同时,要注意不阻塞主线程,以保证用户界面的响应性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值