当前位置: 首页 > news >正文

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#教程 目录

相关文章:

  • Qwen2.5-VL视觉大语言模型复现过程,没碰到什么坑
  • 【AI量化第24篇】KhQuant 策略框架深度解析:让策略开发回归本质——基于miniQMT的量化交易回测系统开发实记
  • Go语言入门到入土——三、处理并返回异常
  • Python爬虫之线程、进程、协程详解
  • Python 实现日志备份守护进程
  • JavaScript模块化开发:CommonJS、AMD到ES模块
  • AUTOSAR图解==>AUTOSAR_SWS_CryptoDriver
  • blender里面的材质列表
  • JavaEE——线程安全
  • Java工具类——实体类列表写入excel
  • Java 工厂设计模式详解:用统一入口打造灵活可扩展的登录系统----掌握 Spring 源码的基础第一步
  • 【Semantic Kernel核心组件】Plugin:连接AI与业务逻辑的桥梁
  • EmbeddingBag介绍与案例
  • Android问题整理
  • 数据加盐/加密
  • CentOS 中安装 vim
  • qt中关于思源雅黑字体的使用
  • OpenCV 图形API(43)颜色空间转换-----将 BGR 图像转换为 LUV 色彩空间函数BGR2LUV()
  • 《vue3学习手记4》
  • 《前端面试题之 Vue 篇(第二集)》
  • 经济日报金观平:充分发挥超大规模市场优势
  • 重庆大学:对学术不端行为“零容忍”,发现一例、查处一例
  • 要更加冷静地看待“东升西降”的判断
  • 新修订的《婚姻登记条例》明起施行,领证不用户口本了
  • 中日有关部门就日本水产品输华问题进行第三次谈判,外交部回应
  • 中国天主教组织发贺电对新教皇当选表示祝贺