您的位置:首页 > 编程语言 > C#

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
        }

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: