版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的
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#教程 目录