C# DataGridViewButtonColumn的使用—动态改变按钮的文本
2016-05-20 08:43
627 查看
http://yueqing.blog.163.com/blog/static/3208259201191811715458/ .Net的DataGridView控件中,提供了一种列的类型,叫 DataGridViewButtonColumn ,这种列类型是展示为一个 按钮,可以给button赋予相应的text,并且,此button可以用来做处理事件的判断依据。 在正式开始介绍使用方法之前,我们先要进行一个概念性的说明: DataGridViewButtonColumn,虽然在UI展现上,是一个BUTTON的样子,但是,它的实际形态,并不是传统意义的BUTTON,而是渲染出来的样式,完全是painting的效果而已。所以,对于传统意义的BUTTON的那一套在这里都失效啦 今天,我们先来说一下,如何根据需要动态改变某个button显示的文本 程序实现的效果图如下 实现的步骤: 给DataGridView添加一列 DataGridViewButtonColumn,设置该列的属性如下: DefaultCellStyle 的 NullValue 设置为 “启用” UseColumnTextForButtonValue = False 其他属性自己根据需要设置 在DataGridView的CellContentClick事件中,写入如下的类似代码: private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { //注释: //dataGridView1.Columns[e.ColumnIndex] is DataGridViewButtonColumn 说明点击的列是DataGridViewButtonColumn列,当然你也根据e.ColumnIndex == 你的按钮列的索引来做 // e.RowIndex > -1 ,说明点击的不是列头 if (dataGridView1.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex > -1) { //获取当前被点击的单元格 DataGridViewButtonCell vCell = (DataGridViewButtonCell)dataGridView1.CurrentCell; if (vCell.Tag == null) { vCell.Value = "停用"; vCell.Tag = true; } } } 以上转自:http://hi.baidu.com/322yali/blog/item/65e8bc1fc474bc13304e15f1.html ----------------------------------------------------------------------------------------------------------------- 下面是根据上面的修改: DataGridViewButtonColumn dgvbc = new DataGridViewButtonColumn(); dgvbc.Name = "Gather"; dgvbc.HeaderText = "采集"; dgvbc.Text = "开始"; //dgvbc.UseColumnTextForButtonValue = true; //dgvbc.DefaultCellStyle.NullValue = true; dgvbc.ReadOnly = true; dgvbc.Width = 60; this.dgv_Meters.Columns.Add(dgvbc); for (int i = 0; i < this.dgv_Meters.Rows.Count; i++) { this.dgv_Meters.Rows[i].Cells["Gather"].Value = "开始"; } -------------------- private void dgv_Meters_CellClick(object sender, DataGridViewCellEventArgs e) { try { if (dgv_Meters.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex > -1) { if (this.dgv_Meters.CurrentCell.Value.ToString() == "开始") { this.dgv_Meters.CurrentCell.Value = "停止"; } else { this.dgv_Meters.CurrentCell.Value = "开始"; } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } 4000 } |
相关文章推荐
- C#开发中IrisSkin2.dll如图添加到工具箱
- C#重绘DataGridView行
- c#入门第一章
- C# Sort排序
- halcon与C#混合编程
- C# j基本操作-拷贝文件夹的所有内容到另一个文件夹内: 复制代码 1 public static void CopyDir(string srcPath, string实现文件夹的复制以及删除
- C#中的String类型转换
- C#Socket通信
- C# Interface
- C#基础-文件夹复制与删除
- C# 使用FileSystemWatcher来监视文件系统的变化
- C#基础-压缩文件及故障排除
- C#格式化文件大小
- 堆栈和托管堆 c#(2)
- C#Winform程序如何发布并自动升级(图解)
- 【C#】安装windows服务
- C#操作session的类实例
- CLR Via C# 第四章 类型基础——读书笔记
- c#Lambda
- C# 扫雷