zoukankan      html  css  js  c++  java
  • 实现DataGridView实时更新数据

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

    namespace WinMilkProject.Project
    {

        public partial class Form1 : Form
        {
            Thread myThread;

            public int frequency = 0;//更新时间频率
            public static bool isUse = false;//是否停止更新
            public static string statusInfo = string.Empty;//状态
            private delegate void myDelegate(DataTable dt);//定义委托
            public Form1()
            {
                InitializeComponent();
                label2.Text = "更新频率为:" + (trackBar1.Value / 1000).ToString() + "";
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                myThread = new Thread(startFillDv);//实例化线程
                myThread.Start();

            }

            private void startFillDv()
            {
                while (true)
                {
                    if (isUse)
                    {
                        statusInfo = "正在实时更新数据......";      
                        DataTable dt = CommonEx.GetDataTableEx("select * from table1");//自己写的数据封装类 能够返回一个datatable
                        Grid(dt);
                        Thread.Sleep(frequency);
                    }
                    else
                    {
                        statusInfo = "停止更新!";
                    }
                }

            }

            private void Grid(DataTable dt)
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new myDelegate(Grid), new object[] { dt });
                }
                else
                {
                    try
                    {
                        this.dataGridView1.DataSource = null;
                        this.dataGridView1.DataSource = dt;
                        dt = null;
                        statusInfo = "更新完成!";
                    }
                    catch 
                    {
                        
                    }
                }

            }

            private void Form1_FormClosed(object sender, FormClosedEventArgs e)
            {
                if (this.myThread.IsAlive)
                {
                    this.myThread.Abort();//结束线程
                }
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                label1.Text = statusInfo;
                frequency = trackBar1.Value;
                if (statusInfo.Trim() == "正在实时更新数据......")
                {
                    pictureBox1.Visible = true;
                }
                else
                {
                    pictureBox1.Visible = false;
                }

            }

            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                if (checkBox1.Checked)
                {
                    isUse = true;
                }
                else
                {
                    isUse = false;
                }

            }

            private void trackBar1_Scroll(object sender, EventArgs e)
            {
                label2.Text = "更新频率为:" + (trackBar1.Value / 1000).ToString() + "";
            }

        }
    }

  • 相关阅读:
    pytorch_基于cifar创建自己的数据集并训练
    Pytorch_3.8_多层感知机
    Pytorch_3.6_ SOFTMAX回归的从零实现
    Linux(debian)下的Python程序守护进程
    Ubuntu16.04安装OpenCV3.4.3
    Beaglebone black 安装docker
    电脑与虚拟机ping
    Beaglebone升级Python3.7过程
    多图上传预览
    放大镜代码
  • 原文地址:https://www.cnblogs.com/ArRan/p/3333517.html
Copyright © 2011-2022 走看看