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");
        }
    }
}
相关推荐
hez20103 天前
在 .NET 上构建超大托管数组
c#·.net·.net core·gc·clr
雨落倾城夏未凉8 天前
第四章c#方法-参数数组和可选参数(16)
后端·c#
唐青枫10 天前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫10 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m62511 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户917215619021111 天前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠11 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫13 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech14 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf15 天前
C#摸鱼实录——IoC与DI案例详解
c#