news 2026/5/1 5:00:23

C#表格与定时器实战技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#表格与定时器实战技巧

一,表格:

1,AutoGenerateColumns是否自动生成列,设置为false 需要自己通过界面绑定类的属性(自己设置列的标题、自己设置列显示哪个属性) 设置为true,表格自动显示列的标题为绑定类的属性

2,dataGridView1 表格 可以通过DataSource属性进行绑定数据源,但是后续添加的新的数据不会立即显示到控件上,需要 再次对 dataGridView1.DataSource=null之后 再重新赋值

3,SelectedRows 选中的行 可以选择多个

4,DataBoundItem 获取选中行绑定对象,as 强制转换成Student对象

5,MessageBox.Show是有返回值的,为DialogResult对象(对话结果对象),

6,获取单元格的内容, Cells["Name1"] 获取name属性为Name1单元格的内容

7,dataGridView1.Font; //表格的默认字体

8,格式化字符串 字符串的对齐方式
StringFormat sf = new StringFormat()
{
Alignment = StringAlignment.Center,// 水平对齐方式居中
LineAlignment = StringAlignment.Center, //竖直对齐方式居中
};

9,Brushes.Black 画笔的颜色

10,Graphics 图形类

11,DrawString 绘制一个文本 参数1是绘制的字符串,参数2是绘制字体,参数3绘制的笔刷颜色 ,参数4 绘制的区域 , 参数5绘制字符串对齐方式

e.Graphics.DrawString(s,dataGridView1.Font,Brushes.Black, rect,sf);

二,自定义表格样式

1,DatagridviewStyle 关于表格样式的一个类文件,DgvStyle1()和 DgvStyle2() 设计表格样式

2,DgvRowCount() 绘制行标题

三,定时器

1,this.timer1.Stop();// 关闭定时器

2,this.timer1.Start();//开启定时器

3,this.timer1.Enabled = true; //设置定时器为激活状态的

4, this.timer1.Interval = 10;//触发定时器函数时间间隔 ms为单位

5,Color.FromArgb(255, 255, 255) 通过三原色取值合成一个颜色 三个值分别为红绿蓝 值的范围0-255,哪个值越大,越接近该颜色,255,255,255 白色;0,0,0 黑色,

6,label1.Left label的左边的距离 label1.Right label的右边的距离

四,使用代码创建定时器

1,创建定时器

timer = new Timer() { Enabled=true,Interval=10};

2,绑定定时器事件

timer.Tick += Timer_Tick;

3,进行循环添加label

for (int i = 0; i < 10; i++)
{
Label label = new Label()
{
Text = i.ToString(),
Location = new Point(100 * i, 200),
BackColor = Color.Aqua,
Size = new Size(50, 50),
TextAlign = ContentAlignment.MiddleCenter
};
this.Controls.Add(label);

4,创建随机数

}

}
Random rnd = new Random();
private void Timer_Tick(object sender, EventArgs e)
{
//MessageBox.Show(this.Controls.Count + "");
for (int i = 0;i<this.Controls.Count;i++) //this.Controls.Count。控件的个数
{
if (this.Controls[i] is Label) // 判断控件是不是Label,
{
this.Controls[i].BackColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
this.Controls[i].ForeColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
}
}

}

5, override 重写OnPaint方法 当绘制窗体的时候触发
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);// base调用基类的重新绘制方法
// 自定义绘图逻辑
Graphics g = e.Graphics;
Rectangle rect = new Rectangle(10, 10, 300, 50); //窗户一个矩形区域
Font font = new Font("Arial", 32, FontStyle.Bold);
LinearGradientBrush brush = new LinearGradientBrush(rect, Color.Red, Color.Yellow, 45f);// 创建一个线性渐变的笔刷
g.DrawString("渐变文本", font, brush, new PointF(10, 10));

}

}
}

运行结果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 20:13:29

2026年上班第一天最值得做的第一件事,大家来盘盘。

对于程序员、技术人员来说&#xff0c;2026年上班第一天最值得做的第一件事&#xff0c;不是写代码、不是开例会&#xff0c;而是&#xff1a;花15–30分钟&#xff0c;彻底梳理并验证你的开发环境与关键工具链是否就绪、安全、高效。✅ 为什么这是“最值得的第一件事”&#x…

作者头像 李华
网站建设 2026/4/26 22:25:22

API数据拉取:动态获取远程内容触发GLM-TTS生成

API数据拉取驱动GLM-TTS&#xff1a;构建动态语音生成系统 在智能语音应用日益普及的今天&#xff0c;用户早已不满足于“固定文本→机械朗读”的传统模式。无论是新闻平台希望实现自动播报、企业需要实时舆情广播&#xff0c;还是数字人直播前批量准备口播内容&#xff0c;人们…

作者头像 李华
网站建设 2026/4/23 10:04:53

组合逻辑电路设计快速理解:关键时序参数与传播延迟关系图解

组合逻辑电路设计的时序密码&#xff1a;传播延迟如何决定系统命运你有没有遇到过这样的情况&#xff1f;代码写得完美无缺&#xff0c;功能仿真全部通过&#xff0c;结果一上板——数据错乱、状态机跑飞。查来查去&#xff0c;问题竟然出在一条看似简单的组合逻辑路径上。没错…

作者头像 李华
网站建设 2026/4/23 16:44:05

通俗解释UDS 28服务如何影响网络通信

一文讲透UDS 28服务&#xff1a;如何精准“掐断”ECU通信流你有没有遇到过这种情况——正在给某个ECU刷写软件&#xff0c;结果总线上传来一堆无关报文&#xff0c;导致编程反复超时失败&#xff1f;或者在远程诊断时&#xff0c;多个节点抢着回复&#xff0c;搞得诊断仪应接不…

作者头像 李华
网站建设 2026/4/28 12:05:33

Dark Mode暗黑主题:保护开发者深夜工作的视力健康

Dark Mode 暗黑主题&#xff1a;守护开发者深夜工作的视觉健康 在人工智能与大模型技术飞速演进的今天&#xff0c;语音合成系统&#xff08;Text-to-Speech, TTS&#xff09;早已不再是实验室里的概念玩具。从智能客服到虚拟主播&#xff0c;从无障碍阅读到个性化内容生成&…

作者头像 李华
网站建设 2026/4/30 3:13:21

加载状态提示:明确告知用户GLM-TTS正在处理中

加载状态提示与零样本语音克隆&#xff1a;提升 GLM-TTS 交互体验的关键实践 在当前 AI 音频生成技术飞速发展的背景下&#xff0c;用户对语音合成系统的期待早已超越“能说话”这一基本功能。人们希望系统不仅声音自然、支持个性化音色&#xff0c;还能在操作过程中给予清晰反…

作者头像 李华