21.Winfrom —— 定时器、日期选择器、进度条、表格、DataTable

目录

[一、Timer 定时器组件](#一、Timer 定时器组件)

核心说明

[二、DateTimePicker 日期选择器](#二、DateTimePicker 日期选择器)

核心说明

[三、ProgressBar 进度条](#三、ProgressBar 进度条)

核心说明

[四、DataGridView 表格控件](#四、DataGridView 表格控件)

核心说明

[4.1 绑定实体 List](#4.1 绑定实体 List)

[4.2 绑定 DataTable 数据表](#4.2 绑定 DataTable 数据表)


一、Timer 定时器组件

核心说明

运行在 UI 线程,定时触发 Tick 事件,毫秒为单位设置间隔,Start () 开启、Stop () 停止,适合 UI 动画、倒计时、自动刷新。

cs 复制代码
using System;
using System.Drawing;
using System.Windows.Forms;
namespace _3定时器
{
    public partial class Form1 : Form
    {
        Timer t;
        public Form1()
        {
            InitializeComponent();
            t = new Timer();
            t.Interval = 1;
            t.Tick += T_Tick;
        }
        Random r = new Random();
        int x = 3;
        private void T_Tick(object sender, EventArgs e)
        {
            int red = r.Next(256);
            int green = r.Next(256);
            int blue = r.Next(256);
            label1.BackColor = Color.FromArgb(red, green, blue);
            label1.Left += x;
            if (label1.Left >= this.Width - label1.Width || label1.Left <= 0)
            {
                x = -x;
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            t.Start();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            t.Stop();
        }
    }
}

二、DateTimePicker 日期选择器

核心说明

可视化选择年月日时分秒,Format 设置显示格式,ValueChanged 监听日期修改,Value 读取选中时间。

cs 复制代码
using System;
using System.Windows.Forms;
namespace _4dataTimePick
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            DateTimePicker dt = new DateTimePicker()
            {
                Format = DateTimePickerFormat.Long,
                Value = new DateTime(2000, 1, 1)
            };
            dt.ValueChanged += Dt_ValueChanged;
            MessageBox.Show(dt.Value.ToLongDateString());
            this.Controls.Add(dt);
        }
        private void Dt_ValueChanged(object sender, EventArgs e)
        {
            MessageBox.Show(((DateTimePicker)sender).Value.ToLongDateString());
        }
        private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
        {
            MessageBox.Show(monthCalendar1.SelectionStart.ToShortDateString());
        }
    }
}

三、ProgressBar 进度条

核心说明

Minimum 最小值、Maximum 最大值、Value 当前进度值,直观展示任务加载进度。

cs 复制代码
using System;
using System.Windows.Forms;
namespace _5进度条progressbar
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            getValue();
        }
        public void getValue()
        {
            for (int i = 0; i < 101; i++)
            {
                progressBar1.Value = i;
            }
        }
    }
}

四、DataGridView 表格控件

核心说明

桌面开发表格展示神器,支持绑定 List 实体集合、DataTable 数据表,可自定义列、单元格点击事件,支持增删改查。

4.1 绑定实体 List

cs 复制代码
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace _6datagridview
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            BindData();
        }
        List<Student> list = new List<Student>();
        public void BindData()
        {
            list.Add(new Student() { Name = "姆巴佩", Id = "001", Age = 20, Sex = "男", Phone = "12121" });
            list.Add(new Student() { Name = "梅西", Id = "002", Age = 30, Sex = "男", Phone = "12121" });
            list.Add(new Student() { Name = "C罗", Id = "003", Age = 31, Sex = "男", Phone = "12121" });
            list.Add(new Student() { Name = "哈兰德", Id = "004", Age = 19, Sex = "男", Phone = "12121" });
        }
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.DataSource = list;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            DataGridView dg = new DataGridView();
            DataGridViewTextBoxColumn stuId = new DataGridViewTextBoxColumn();
            stuId.DataPropertyName = "Id";
            stuId.HeaderText = "学号";
            stuId.Name = "Id";
            stuId.Visible = true;

            DataGridViewTextBoxColumn nameColu = new DataGridViewTextBoxColumn();
            nameColu.DataPropertyName = "Name";
            nameColu.HeaderText = "姓名";
            nameColu.Name = "Name";
            nameColu.Visible = true;

            DataGridViewTextBoxColumn sex = new DataGridViewTextBoxColumn();
            sex.DataPropertyName = "Sex";
            sex.HeaderText = "性别";
            sex.Name = "Sex";
            sex.Visible = true;

            DataGridViewTextBoxColumn age = new DataGridViewTextBoxColumn();
            age.DataPropertyName = "Age";
            age.HeaderText = "年龄";
            age.Name = "Age";
            age.Visible = true;

            DataGridViewTextBoxColumn phone = new DataGridViewTextBoxColumn();
            phone.DataPropertyName = "Phone";
            phone.HeaderText = "手机";
            phone.Name = "Phone";
            phone.Visible = true;

            dg.Columns.Add(stuId);
            dg.Columns.Add(nameColu);
            dg.Columns.Add(sex);
            dg.Columns.Add(age);
            dg.Columns.Add(phone);
            dg.CellClick += Dg_CellClick;
            dg.AutoGenerateColumns = false;
            dg.Size = new Size(600, 300);
            this.Controls.Add(dg);
            dg.DataSource = list;
        }
        private void Dg_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            MessageBox.Show(e.ColumnIndex + "");
        }
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
            MessageBox.Show(row.Cells[e.ColumnIndex].Value + "");
        }
    }
    public class Student
    {
        public string Name { get; set; }
        public string Id { get; set; }
        public int Age { get; set; }
        public string Sex { get; set; }
        public string Phone { get; set; }
    }
}

4.2 绑定 DataTable 数据表

cs 复制代码
using System;
using System.Data;
using System.Windows.Forms;
namespace _7datagridview绑定dataTable类型的数据
{
    public partial class Form1 : Form
    {
        DataTable dataTable;
        public Form1()
        {
            InitializeComponent();
            dataTable = new DataTable();
            dataTable.Columns.Add("学号");
            dataTable.Columns.Add("Name");
            dataTable.Columns.Add("State");
            dataTable.Columns.Add("Phone");
            dataTable.Rows.Add(1, "吴亦凡", "坐牢", "1343");
            dataTable.Rows.Add(2, "罗志祥", "复出", "1343");
            dataTable.Rows.Add(3, "李云迪", "未知", "1343");
            dataTable.Rows.Add(4, "李易峰", "封杀", "1343");
            dataTable.Rows.Add(5, "郑爽", "封杀", "1343");
            dataGridView1.DataSource = dataTable;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            dataTable.Rows.Add(6, "郑爽", "封杀", "13xxxx43");
        }
    }
}
相关推荐
z落落2 小时前
C#WinForm控件实战:Panel与单选框动态创建
开发语言·c#
qq_422152574 小时前
Word 文件太大怎么压缩?2026 年文档瘦身方案对比
开发语言·c#·word
影寂ldy6 小时前
C# 事件完整学习笔记(发布订阅 + 自定义事件 + 内置 EventHandler)
笔记·学习·c#
kyle~7 小时前
DDS分布式实时系统---自省机制
开发语言·分布式·机器人·c#·接口·ros2
Java面试题总结7 小时前
MarkItDown 再次登顶GitHub榜
开发语言·c#·github
xiaoshuaishuai88 小时前
C# 定制化Markdown编辑器
开发语言·c#·编辑器
yugi9878389 小时前
基于C#实现数字识别率的OCR方案
开发语言·c#·ocr
天天代码码天天9 小时前
OpenCV 5 + PP-OCRv6 + OpenVINO:C# 本地 OCR 推理更快、更稳、更好集成
opencv·c#·openvino
Chris _data11 小时前
c#学习WPF笔记(一)
学习·c#·wpf