news 2026/2/28 7:13:03

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/2/24 19:44:03

大模型智能体技术路线对比:从规划检索到洞察式规划的未来之路

文章评估了AI大模型智能体的技术路线&#xff0c;提出三种实现路径&#xff1a;基于上下文工程的智能体、规划检索整合的通用智能体&#xff0c;以及未来可能的洞察式规划垂直智能体。作者认为当前智能体尚未充分发掘大模型潜力&#xff0c;并以教育领域为例分析现有技术路线的…

作者头像 李华
网站建设 2026/2/26 7:53:21

Langchain4j-文档处理和 RAG 流程分析

文档处理和 RAG 流程分析 请关注公众号【碳硅化合物AI】 目录 概述文档加载流程文档解析和分割嵌入生成和存储RAG 检索增强流程关键类关系实现关键点说明总结 概述 RAG&#xff08;Retrieval-Augmented Generation&#xff09;是 LangChain4j 的核心功能。基本思路&#x…

作者头像 李华
网站建设 2026/2/22 15:06:52

x64dbg脚本自动化入门教程:简化重复任务流程

从手动到自动&#xff1a;用 x64dbg 脚本重塑你的逆向工程效率你有没有过这样的经历&#xff1f;连续三天分析同一个加壳样本&#xff0c;每次都要重复同样的操作&#xff1a;加载程序、下断点、单步跟进、识别 OEP、转储内存……手指都快按麻了&#xff0c;稍一走神还可能漏掉…

作者头像 李华
网站建设 2026/2/28 2:23:17

音频质量影响识别结果:信噪比越高准确率越好

音频质量影响识别结果&#xff1a;信噪比越高准确率越好 在智能语音系统日益普及的今天&#xff0c;我们早已习惯对手机说“嘿 Siri”&#xff0c;或是在会议中自动生成字幕。然而&#xff0c;当系统把“打开空调”听成“打开厕所”&#xff0c;把财务汇报中的“一百万”误识为…

作者头像 李华
网站建设 2026/2/27 8:25:22

为什么说Fun-ASR是中小企业语音识别最优选?

为什么说Fun-ASR是中小企业语音识别最优选&#xff1f; 在远程办公常态化、会议录音爆炸式增长的今天&#xff0c;越来越多中小企业开始面临一个共性问题&#xff1a;如何高效、安全地将大量语音内容转化为可编辑、可分析的文字&#xff1f;传统做法是依赖人工听写&#xff0c;…

作者头像 李华
网站建设 2026/2/25 7:12:24

牛津大学:给AI装上“可信度雷达“,像人类一样学会说“我不确定“

这项由英国牛津大学工程科学系的Jeremias Sulam、Itai Gat和Aviv Navon&#xff0c;与康奈尔大学、麻省理工学院、哈佛大学等机构的研究者共同完成的研究&#xff0c;发表于2025年1月的arXiv预印本平台&#xff0c;论文编号为arXiv:2501.09588v1。对这项研究感兴趣的读者可以通…

作者头像 李华