news 2026/6/10 1:10:40

DataGridView和定时器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DataGridView和定时器

一、DataGridView

首先将控件添加到窗体,代码写一个对象用来生成表格

public class Student { public string Name { get; set; } public int Age { get; set; } public string Info { get; set; } }
public List<Student> list = new List<Student>(); list.Add(new Student() { Name = "张三1", Age = 10, Info = "委内瑞拉总统被捕" }); list.Add(new Student() { Name = "张三2", Age = 20, Info = "委内瑞拉总统被捕" }); list.Add(new Student() { Name = "张三3", Age = 30, Info = "委内瑞拉总统被捕" });

两个重要代码

//AutoGenerateColumns是否自动生成列,设置为false 需要自己通过界面绑定类的属性(自己设置列的标题、自己设置列显示哪个属性) //设置为true,表格自动显示列的标题为绑定类的属性 dataGridView1.AutoGenerateColumns = false; //dataGridView1 表格 可以通过DataSource属性进行绑定数据源,但是后续添加的新的数据不会立即显示到控件上,需要 // 再次对 dataGridView1.DataSource=null之后 再重新赋值 dataGridView1.DataSource = list;

如图

在属性添加列名,达到上图效果

选择数据源

数据源是生成对象的属性。

增删改查

现在用Button写一个增删改查的效果

//添加数据源的方法 private void button1_Click(object sender, EventArgs e) { list.Add(new Student() { Name = "张三4", Age = 40, Info = "委内瑞拉总统被捕" }); dataGridView1.DataSource = null; dataGridView1.DataSource = list; }
//删除数据源的方法 private void button2_Click(object sender, EventArgs e) { //先判断是否选中行 //SelectedRows 选中的行 可以选择多个 if (dataGridView1.SelectedRows.Count==0) //没选中行 { MessageBox.Show("请先选中要删除的一行"); return; } //选中行了 获取选中的一行索引值 或者这一行对象 Student stu = null; //要删除的一行对象 // DataBoundItem 获取选中行绑定对象 // as 强制转换成Student对象 stu = dataGridView1.SelectedRows[0].DataBoundItem as Student; //MessageBox.Show(stu.Name); //MessageBox.Show是有返回值的,为DialogResult对象(对话结果对象), DialogResult result = MessageBox.Show("是否要删除改行", "温馨提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result != DialogResult.Yes) //如果没有选择yes 直接return { return; } //如果选择警告框的Yes键时候 再删除 list.Remove(stu); //刷新界面 dataGridView1.DataSource = null; dataGridView1.DataSource = list; //删除成功之后 可以再次提示一下 MessageBox.Show("删除成功"); }
//查询数据源 把满足查询条件的数据源重新绑定给表格 private void button3_Click(object sender, EventArgs e) { //FindAll() 查找满足条件的所有的元素对象, 与输入框文本内容一样的对象 List<Student> currentList = list.FindAll(v => v.Name == textBox1.Text); if (currentList.Count==0) { MessageBox.Show("没找到要找的学生"); return; } dataGridView1.DataSource = null; dataGridView1.DataSource = currentList; }
//修改数据源 private void button4_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count == 0) { MessageBox.Show("请先选中要修改的一行"); return; } // 获取选中一行的对象 DataGridViewRow cc = dataGridView1.SelectedRows[0]; Student stu = cc.DataBoundItem as Student; stu.Name = "高达"; stu.Age = 20; stu.Info = "人在搭在"; dataGridView1.DataSource = null; dataGridView1.DataSource = list; // 获取单元格的内容 // Cells["Name1"] 获取name属性为Name1单元格的内容 // MessageBox.Show(dataGridView1.SelectedRows[0].Cells["Name1"].Value.ToString()); // DataGridViewRow cc1 = dataGridView1.SelectedRows[0]; // MessageBox.Show(cc1.Cells["Name1"].Value.ToString()); } //当行重新绘制的时候触发函数

二、WinForm定时器

Timer

控件名称:Timer

在窗体中是不显示定时器的

必要设置

this.timer1.Stop();// 关闭定时器 this.timer1.Start();//开启定时器 this.timer1.Enabled = true; //设置定时器为激活状态的 this.timer1.Interval = 10;//触发定时器函数时间间隔 ms为单位

1,2和3是同效果,写一个就行

也可以将定时器写到Button中,按钮控制定时器开启或关闭

{ this.timer1.Start(); //开启定时器 } private void stopTimer_Click(object sender, EventArgs e) { this.timer1.Stop();// 关闭定时器 }

现在写一个1秒改变文本颜色,并且文本向下移动

Random ran = new Random();//随机数对象 int count = 0; //定时器事件 private void timer1_Tick(object sender, EventArgs e) { count++; //MessageBox.Show("定时器事件") ; //Color.FromArgb(255, 255, 255) 通过三原色取值合成一个颜色 //三个值分别为红绿蓝 值的范围0-255,哪个值越大,越接近该颜色,255,255,255 白色;0,0,0 黑色, int r = ran.Next(256); int g = ran.Next(256); int b = ran.Next(256); label1.BackColor = Color.FromArgb(r, g, b); //label1.Left label的左边的距离 label1.Location = new Point(label1.Left, count); if (count>=400) { count = 0; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 0:41:21

高校合作项目:计算机学院共建AI实验室

高校合作项目&#xff1a;计算机学院共建AI实验室 —— Fun-ASR语音识别系统技术解析 在智能语音技术加速落地的今天&#xff0c;高校正成为连接前沿算法与实际应用的关键桥梁。尤其是在教学辅助、科研实验和无障碍服务等场景中&#xff0c;语音识别已不再是“锦上添花”的功能…

作者头像 李华
网站建设 2026/6/9 22:08:01

账单明细导出:支持CSV格式财务报销

账单明细导出&#xff1a;支持CSV格式财务报销 在企业日常运营中&#xff0c;会议纪要、客户沟通、差旅记录等大量信息仍以语音形式存在。这些“声音数据”虽被录制保存&#xff0c;却往往沉睡于文件夹深处——因为从录音到可报销凭证之间&#xff0c;横亘着一道人工转录与整理…

作者头像 李华
网站建设 2026/6/9 18:45:42

ARM异常处理机制入门:小白也能懂的通俗解释

ARM异常处理机制入门&#xff1a;像搭积木一样理解CPU的“应急响应系统”你有没有想过&#xff0c;为什么你的手机能在听音乐的同时收到微信消息&#xff1f;为什么单片机可以在主程序运行时&#xff0c;突然响应一个按键按下&#xff1f;这一切的背后&#xff0c;都离不开处理…

作者头像 李华
网站建设 2026/6/5 5:36:08

x64dbg下载从零开始:小白也能轻松掌握

从零开始玩转 x64dbg&#xff1a;新手也能轻松上手的调试入门指南 你有没有好奇过&#xff0c;一个程序在电脑里到底是怎么“跑”起来的&#xff1f; 它什么时候调用了哪个函数&#xff1f;变量是怎么变化的&#xff1f;为什么点下按钮就弹出注册码错误&#xff1f; 如果你想…

作者头像 李华
网站建设 2026/6/5 4:07:53

Android架构设计与性能优化实践

跨越速运 (大厂全资控股)Android经理[深圳] 职位描述 Android开发经验架构经验团队管理经验架构设计/优化Android客户端产品研发原生Framework 【岗位职责】 1、负责Android客户端的应用架构设计和承担核心功能代码编写; 2、负责设计模块与模块间及与第三方模块代码之间高效解耦…

作者头像 李华
网站建设 2026/6/5 4:33:27

深度剖析内核崩溃日志:WinDbg Preview下载使用指南

从蓝屏到真相&#xff1a;手把手教你用 WinDbg Preview 解析内核崩溃日志你有没有遇到过这样的场景&#xff1f;服务器毫无征兆地重启&#xff0c;终端用户电脑突然蓝屏&#xff0c;屏幕上一闪而过的错误代码还没来得及记下就黑了屏。这种“无声的崩溃”背后&#xff0c;其实藏…

作者头像 李华