DataGridViewButtonColumn

.Net的DataGridView控件中,提供了一种列的类型,叫 DataGridViewButtonColumn ,这种列类型是展示为一个 按钮,可以给button赋予相应的text,并且,此button可以用来做处理事件的判断依据。
在正式开始介绍使用方法之前,我们先要进行一个概念性的说明:
DataGridViewButtonColumn,虽然在UI展现上,是一个BUTTON的样子,但是,它的实际形态,并不是传统意义的BUTTON,而是渲染出来的样式,完全是painting的效果而已。所以,对于传统意义的BUTTON的那一套在这里都失效啦

今天,我们先来说一下,如何根据需要动态改变某个button显示的文本

实例1:手动创建


        private void GridViewThree_Load(object sender, EventArgs e)
        {
            //禁用添加行
            dataGridView1.AllowUserToAddRows = false;
            //创建 按钮列
            DataGridViewButtonColumn btnCol1 = new DataGridViewButtonColumn();
            //显示为此列中单元格的按钮文本
            btnCol1.UseColumnTextForButtonValue = false;
            btnCol1.Name = "Name";
            btnCol1.HeaderText = "按钮列^^^^^^";
            dataGridView1.Columns.Add(btnCol1);

            //创建 多选框列
            DataGridViewCheckBoxColumn checkCol = new DataGridViewCheckBoxColumn();
            checkCol.HeaderText = "boolean列!!!";
            dataGridView1.Columns.Add(checkCol);

            //创建 行
            DataGridViewRow rowOne = new DataGridViewRow();
            rowOne.CreateCells(dataGridView1);
            rowOne.Cells[0].Value = "编辑";
            rowOne.Cells[1].Value = false;
            dataGridView1.Rows.Add(rowOne);

            DataGridViewRow rowTwo = new DataGridViewRow();
            rowTwo.CreateCells(dataGridView1);
            rowTwo.Cells[0].Value = "删除";
            rowTwo.Cells[1].Value = true;
            dataGridView1.Rows.Add(rowTwo);
        }

        //单元格点击事件
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //获取当前点击的列
            DataGridViewButtonColumn btnCol = dataGridView1.Columns[e.ColumnIndex] as DataGridViewButtonColumn;
            if (btnCol != null)
            {
                MessageBox.Show("当前点击的列是:" + btnCol.HeaderText);
            }
            DataGridViewCheckBoxColumn checkCol = dataGridView1.Columns[e.ColumnIndex] as DataGridViewCheckBoxColumn;
            if (checkCol != null)
            {
                MessageBox.Show("当前点击的是checkbox列:" + checkCol.HeaderText);
            }


            //e.RowIndex>-1,说明当前点击的不是标题行(列头)
            if (e.RowIndex == -1)
            {
                MessageBox.Show("标题咧");
            }

            //获取当前点击的行
            if (dataGridView1.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex > -1)
            {
                //获取当前被点击的单元格
                DataGridViewButtonCell btnCell = dataGridView1.CurrentCell as DataGridViewButtonCell;
                MessageBox.Show(btnCell.Value.ToString());

                if (btnCell.Tag == null)
                {
                    MessageBox.Show(btnCell.Value.ToString());
                    btnCell.Value = "停用";
                    btnCell.Tag = true;
                }
            }
        }

实例2:数据绑定


        //自定义绑定,指定标题列
        private void DataGridFourth_Load(object sender, EventArgs e)
        {
            //绑定List集合要求绑定到 对象的属性,而不是成员变量
            List<UserName> list = UserName.GetList();
            dataGridView1.DataSource = list;
        }
        //单元格点击事件
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex] is DataGridViewButtonColumn&&e.RowIndex>-1)
            {
                DataGridViewButtonCell btnCell = dataGridView1.CurrentCell as DataGridViewButtonCell;
                if (btnCell != null)
                {
                    btnCell.Value = "点击过了";
                }
            }
        }

    public class UserName
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public bool IsEnable { get; set; }
        public string BtnStr { get; set; }
        public static List<UserName> GetList()
        {
            return new List<UserName>() { 
              new UserName{Name="张三",Age=20,IsEnable=false,BtnStr="重置"},
              new UserName{Name="李四",Age=21,IsEnable=false,BtnStr="重置"},
              new UserName{Name="王五",Age=22,IsEnable=true,BtnStr="重置"},
              new UserName{Name="找老刘",Age=23,IsEnable=true,BtnStr="重置"}
            };
        }
    }

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值