20.3 使用技巧3

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的

20.3.5 禁止追加行与禁止删除行

通常情况下DataGridView最末一行是空白行,在此行单元格输入数据就可以追加新行。如果需要不允许用户自行输入增加数据,通过设置DataGridView的AllowUserToAddRows属性即可禁止或允许用户手动追加行。

同样,如果需要禁止或允许用户按下键盘上的Delete按键删除行,通过设置AllowUserToDeleteRows属性即可。

【例 20.8【项目:code20-008】拷贝单元格文本值。

        //禁止/允许用户手动添加新行

        private void button1_Click(object sender, EventArgs e)

        {

            dgv.AllowUserToAddRows = !dgv.AllowUserToAddRows;

        }

        //禁止/允许用户按下Delete按键删除行

        private void button2_Click(object sender, EventArgs e)

        {

            dgv.AllowUserToDeleteRows = !dgv.AllowUserToDeleteRows;

        }

20.3.7 运行时更改单元格类型

除了前面所讲到的在运行时增加某种类型的列,偶尔也会出现某个单元格需要修改为某种类型。

在第20.3.6节时,讲述了6种列类型,对应地,有6种单元格类型:DataGridViewButtonCell、DataGridViewCheckBoxCell、DataGridViewComboBoxCell、DataGridViewImageCell、DataGridViewLinkCell、DataGridViewTextBoxCell。它们继承于DataGridViewCell。

注意:DataGridViewCell下还有DataGridViewHeaderCell单元格类型,这是专门针对行表头单元格和列表头单元格的,不能将包含数据的单元格设置为此类型,否则会出错。

在运行时更改单元格类型常用的方法是直接定义某个类型单元格,然后将DataGridView中的某个单元格设置为刚才定义的变量。

【例 20.15【项目:code20-015】更改单元格类型。

        private void Form1_Load(object sender, EventArgs e)

        {

            //设置10行数据

            for(int i = 1;i<= 10;i++)

            {

                int rowIndex = dgv.Rows.Add();

                dgv.Rows[rowIndex].Cells[0].Value = i;

                dgv.Rows[rowIndex].Cells[1].Value = "第" + i + "小学";

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {

            //将单元格(1,3)设置为图片类型

            DataGridViewImageCell newcellpic = new DataGridViewImageCell();

            dgv[1, 3] = newcellpic;

            newcellpic.Value = Image.FromFile("c:\\lessons\\g.png");

            //将单元格(1,4)设置为下拉框类型

            DataGridViewComboBoxCell newcellCombo = new DataGridViewComboBoxCell();

            dgv[1, 4] = newcellCombo;

            newcellCombo.Items.Clear();

            newcellCombo.Items.Add("第1中学");

            newcellCombo.Items.Add("第2中学");

            newcellCombo.Items.Add("第3中学");

            newcellCombo.Value = "第1中学";

        //将单元格(1,5)设置为超链接类型

            DataGridViewLinkCell newcellLink = new DataGridViewLinkCell();

            newcellLink.Value = "我的博客";

            newcellLink.LinkBehavior = LinkBehavior.HoverUnderline;

            newcellLink.TrackVisitedState = true;

            dgv[1, 5] = newcellLink;

            //将单元格(1,6)设置为按钮类型

            DataGridViewButtonCell newcellBtn = new DataGridViewButtonCell();

            dgv[1, 6] = newcellBtn;

            newcellBtn.Value = "按钮";

        }

        private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)

        {

            //判断是否是按钮

            if( dgv[e.ColumnIndex, e.RowIndex].GetType() == typeof(DataGridViewButtonCell))

                MessageBox.Show("点击了第" + (e.RowIndex + 1) + "行的按钮");

        }

运行结果如下图所示:

图20-21 修改单元格类型

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Net学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值