c#滚动条创建实例,多线程

el/2024/7/13 12:03:57

1.滚动条

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class MyProgressBar : Form
    {
        public MyProgressBar()
        {
            InitializeComponent();
            Initial();
        }
        public static int maxValue = 0;
        public static int minValue = 0;

        public void Initial()
        {

            this.progressBar1.Maximum = 100;
            this.progressBar1.Minimum = 0;

            maxValue = 100;
            minValue = 0;

        }


        //public delegate void UpdateValue(int value);
        public bool UpdateValue(int nValue)
        {
            while (!this.IsHandleCreated)
            {
                //MessageBox.Show("等待窗体句柄创建");
            };
            //try
            //{
                this.Invoke(new Action(() =>
                {
                    //if (this.Handle == null) return ;
                    if (nValue > 0)
                    {
                        this.label1.Text = nValue.ToString()+"%";
                        if ( nValue < progressBar1.Maximum)
                        {
                            progressBar1.Value =nValue;

                        }
                        else
                        {
                            progressBar1.Value = progressBar1.Maximum;
                            this.Close();

                        }
                    }

                }));
                return true;
            //}
            //catch(Exception ee)
            //{
                //MessageBox.Show(ee.ToString());
                return true;
            //}
        }

        

    }
}
2.主窗体调用

 public delegate bool UpdateProgressValue(int value);
        public event UpdateProgressValue UpdateProgressEvent;
        public void CreatedataLineFile(string folderPath)
        {

            //创建进度条
            Thread th = new Thread(() =>
            {

                

                MyProgressBar pb = new MyProgressBar();
                pb.StartPosition = FormStartPosition.CenterScreen;
                UpdateProgressEvent += pb.UpdateValue;
                pb.ShowDialog();
            });
            th.Start();

            while (UpdateProgressEvent == null) ;
            for (int i = 0; i < 1000;i++ )
            {
                Thread.Sleep(10);
                UpdateProgressEvent(Convert.ToInt32(i * 1.0 / 1000 * (MyProgressBar.maxValue - MyProgressBar.minValue)+MyProgressBar.minValue));
            }
               
            return;

}


http://www.ngui.cc/el/5545751.html

相关文章

用最小二乘法拟合任意次函数曲线(C#)

///<summary> ///用最小二乘法拟合二元多次曲线 ///</summary> ///<param name"arrX">已知点的x坐标集合</param> ///<param name"arrY">已知点的y坐标集合</param> ///<param name"length&qu…

C#操作快捷方式(获取快捷方式属性、创建快捷方式)

第一步 创建一个项目 无需废话&#xff0c;跳过。 第二步 引用COM组件 右键“引用”&#xff0c;“添加引用”&#xff0c;选择“COM组件”&#xff0c;找到“Windows Script Host Object Model”&#xff0c;然后确定。 第三步 编写创建快捷方式的代码 1 // 声明操作对…

让使用SQLite的.NET应用自适应32位/64位系统

Windows 7 64 bit(刚扩到4G内存,果断换64位的,那速度杠杠的) Microsoft Visual Studio 2010 Ultimate 32bit(在64位系统里运行正常) sqlite-netFx40-setup-bundle-x64-2010-1.0.90.0 首先要先下载SQLite的开发环境安装包(我是这么理解的,貌似只搞到System.Data.SQLite.dll这个文…

C#使用DataContractJsonSerializer来进行JSON解析

在使用DataContractJsonSerializer进行解析之前&#xff0c;我们首先需要将两个包引入进来&#xff1a; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; 接下来需要新建一个class&#xff0c;DataContractJsonSerializer可以将JSON字符串转化…

QT操作sqlite概念

SQLite数据库 增、删、改、查 1. 数据库简介 数据库指的是以一定方式存储在一起&#xff0c;能为多个用户共享&#xff0c;具有尽可能小的冗余度的特点&#xff0c;是与应用程序彼此独立的数据集合。 // 一定方式&#xff1a;可以理解为策略、算法 // 网盘相同的文件是以 MD…

QT中全局变量的定义和使用

多的就不说了&#xff0c;本来就是一个简单地内容&#xff0c;只是不会的话会很头疼 我们首先新建两个文件&#xff0c;文件名可以自定义&#xff0c;我们在这里定义为variate.h 和 variate.cpp 当然了&#xff0c;后缀是不能变的。 和函数一样&#xff0c;我们在variate.h中…

C语言中指针动态内存的申请和释放

什么是动态内存的申请和释放&#xff1f; 当程序运行到需要一个动态变量时&#xff0c;需要向系统的堆中申请一块内存&#xff0c;用来存储这块变量&#xff0c;这就是内存的申请。当程序不需要这个变量时&#xff0c;就需要把申请的这块内存释放掉&#xff0c;这就是内存的释放…

Qt中QPainter基本绘图

QWidget 派系的只能在paintEvent中进行重绘&#xff1b;如果你想要很好的交互功能的话推荐QGraphicsView框架&#xff0c;自定义Item的绘制在paint函数&#xff1b;如果你想利用线程绘制的话&#xff0c;你可以创建个QPixmap或者QImage&#xff0c;然后在把图片当画布在线程中绘…

QSqlQuery类操作SQLite(创建、查询、删除、修改)详解

Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作。这里我们所说的“平台 独立”&#xff0c;既包括操作系统平台&#xff0c;也包括各个数据库平台,Qt支持以下几种数据库: QT自带SQLITE数据库,不需要再安装QTDS在Qt4.7起已经被移除 1.QtSql 要使用QtSql 模块的话…

三极管工作原理图解,快速了解三极管结构和工作原理

了解三极管工作原理前&#xff0c;先看一张三极管内部结构原理图&#xff1b;从图中可以清晰的看出NPN和PNP内部结构的区别。 三极管NPN型和PNP型的工作原理&#xff1a; NPN三极管&#xff1a; Vb<Ve &#xff08;截止状态&#xff09; Vc>Vb>Ve&#xff08;放大…