本次来讲讲在c#中如何用ListView实现在指定行之后插入新的一行,并且不影响原有行的内容,最后对行号重新排序。

关于c#中用ListView的用法,这里有讲解:ListView详解 。不太熟悉的朋友可以看看。

首先:要实现的效果如下图:

实现步骤如下:

1.新建一个窗体,拖放好两个button和ListView,一个button命名为:button_AddNewRow,Text为:增加新行。用于在ListView中增加行,另一个button命名为:button_InsertNewRow,Text为:插入新行。用于在ListView中插入行。ListView命名为:filesList 。(以上名字自己喜欢就好)

2.拖好控件,改好名字后,先初始化ListView。在窗体类中,添加下面的方法代码:

   #region  设置ListView控件初始化// 自定义函数设置ListView控件初始属性  private void SetListView(){this.filesList.View = View.Details;                //显示方式(注意View是Details详细显示)  this.filesList.GridLines = true;                //行和列是否显示网格线  this.filesList.LabelEdit = true;                           //是否可编辑  this.filesList.Scrollable = true;                   //没有足够的空间显示时,是否添加滚动条  this.filesList.HeaderStyle = ColumnHeaderStyle.Clickable;              //对表头进行设置  this.filesList.FullRowSelect = true;               //是否可以选择行  filesList.MultiSelect = false;                        //禁止多选 this.filesList.Columns.Add("行号", 1 * filesList.Width / 14);   //设置listView列标题头this.filesList.Columns.Add("指令", 3 * filesList.Width / 14);      this.filesList.Columns.Add("描述", 9 * filesList.Width / 14);    this.filesList.Columns.Add("标号", 1 * filesList.Width / 14);this.filesList.Columns[3].Width = 0;              //用于隐藏第四列的指令标号   不让用户看见}#endregion

3. 初始化listview后,开始添加“增加新行”按钮的 事件。在窗体类中添加如下代码:

  int row_number = 0;                                      //全局变量,用于记录行数和点击新增和插入按钮的点击次数private void button_AddNewRow_Click(object sender, EventArgs e)              //使用增加新行按钮来添加新行。{row_number++;                              //用于记录行数this.filesList.BeginUpdate();   //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度ListViewItem list = new ListViewItem();       //新建ListViewItem对象:listlist.Text = "   " + row_number;    // 问本内容为 行号。  前面的空格式为了让 行号居中,并使后面观察行号变化直观list.SubItems.Add("第2列,第" + row_number + "行");list.SubItems.Add("第3列,第" + row_number + "行");this.filesList.Items.Add(list);this.filesList.EndUpdate();  //结束数据处理,UI界面一次性绘制。}

4.添加“插入新行”按钮的代码如下:

   private void button_InsertNewRow_Click(object sender, EventArgs e)               //使用插入新行按钮来添加新行。{if (this.filesList.SelectedItems.Count != 0)    //如果选中的行等于0,就不执行。默认设置了不能多选{int number = filesList.SelectedItems[0].Index + 1;     //用于记录选中行号,加一是因为本来是从0开始计数的。string Row_Number = (number + 1).ToString();     //然后将选中的行数加一ListViewItem item = new ListViewItem();       //   创建一个listview行的对象item.SubItems.Add("");             //  给新增的行第2列添加数据   插入空数据,因为没有数据的话,修改该行会报错!item.SubItems.Add("");             //  给新增的行第3列添加数据item.SubItems.Add("");              //  给新增的行第4列添加数据this.filesList.Items.Insert(number, item);     //     将新增的对象item插入到指定行this.filesList.BeginUpdate();   //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度for (int i = 0; i <= row_number; i++)             // 重新绘制行号,不影响第二,第三列的内容{this.filesList.Items[i].SubItems[0].Text = (i + 1).ToString();     //添加行号}this.filesList.EndUpdate();  //结束数据处理,UI界面一次性绘制。row_number++;                               //记录点击量filesList.SelectedItems.Clear();          //清空表格行的选择状态}else{MessageBox.Show(this, "前选择要在哪一行后进行插入", "信息提示",MessageBoxButtons.OK, MessageBoxIcon.Information);}if (row_number > 0){button_Delet.Enabled = true;                                                                        //当插入新行时,唤醒删除按钮。button_Change.Enabled = true;                                                                   //当插入新行时,唤醒修改按钮。}}

以上就是实现这个功能的步骤。

C# ListView 在指定行后面插入新行,并对行号重新排序。相关推荐

  1. SQL Server数据库中、获得刚插入新记录的自动ID号

    以下的文章主要是介绍在SQL Server数据库中正确获得刚插入一条新记录的自动ID号的实际操作过程,下面就是文章对其的主要内容的具体描述,望大家在浏览之后会对其有更深的了解. 使用[IDENT_CU ...

  2. 计算机做表格的行高和列宽,表格中列和行的插入与删除及行高和列宽的调整——想象力电脑应用...

    大多数数据输入到工作表后都需要进行管理和格式设置,以获得更好的显示效果,也便于分辨各类型的数据.这里我们将介绍行或列的插入与删除和行高和列宽的调整. 一.行或列的插入与删除 在输入数据时,如果遗漏了某 ...

  3. Txt、记事本等文本文件怎么批量插入标题?怎么在指定位置插入新的内容?

    概要:在我们日常办公中,经常会碰到需要给一批 Txt.Json 或者记事本等各种文本文件批量插入一段新的内容,或者将指定文本文件批量插入一批文本文件中的需求.「我的ABC软件工具箱」就实现了批量在指定 ...

  4. 向EXCEL模板文件中写入数据和插入新行

    在很多情况下,我们需要将程序产生的一些数据按照一些用户要求的EXCEL文件模板格式进行填写,将指定的数据项写入指定的单元格.在某些特定的情况下,可能还需要进行动态的行插入,比如数量不确定的点坐标信息, ...

  5. 关于openpyxl里“合并单元格和插入新行”与“冻结窗格”的坑

    简单记录一下. 1. 在合并单元格上方插入新行,会导致合并位置错误.这应该算是一个bug. 问题描述: 假设"A5"+"A6"是合并的单元格,如果我要在A5上面 ...

  6. java excel 插入新行_excel:插入行更新公式

    我尝试编写一个宏,双击一个单元格,在该单元格下面插入一个新的行与一些公式 . 对我来说重要的是,如果我再次双击单元格,则使用正确的索引更新先前插入的行的公式 . 例如,在下面的代码中,双击A1将在第2 ...

  7. java excel 插入新行_POI ,Java 操作 Excel 實現行的插入(insert row)

    POI ,Java 操作 Excel 實現行的插入(insert row) 前幾天,正在做一個項目,主要用 POI 來操作 Excel 其中,要使用一個,插入功能.主要是因為從數據庫,返回結果集(數據 ...

  8. Pandas操作dataframe对所有列/行求和 ,对指定列/行求和,对某一列/行求和,并添加新的列/行

    计算各行数据总和并作为新列添加到末尾 计算各列数据总和并作为新行添加到末尾 import pandas as pd t=[[1,2,3],[4,5,6],[7,8,9]] df=pd.DataFram ...

  9. POI Excel 插入新的行,下面的行动态移动

    在做Excel 模板时,会有遇到  模板行数不固定,如下图  需要在行次4下面再插入一行:注意:(插入的行如果是下面空白行,需要创建行) 解决方法是使用shifRows方法,第1个参数是指要开始插入的 ...

  10. Excel:将指定的单元格移动n行,实现行的插入

    在现有的Excel表格中,指定某一行插入数据,下面的单元格往下移动 移动前: 如上图,Excel 第一个单元格"广东"的索引是0,在"广东"下插入一条" ...

最新文章

  1. CodeForces - 1360G A/B Matrix(最大流)
  2. 运维总监聂鑫:腾讯海量监控体系经验分享
  3. Linux的实际操作:文件目录类的实用指令 (显示路径pwd 显示文件ls 更改目录cd)
  4. gitlab与已安装nginx(tengine)冲突解决方案,使用自己安装的nginx(tengine)
  5. iphone 流媒体
  6. CentOS设置时区
  7. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
  8. 世界各国各地区名称代码对应表
  9. DZ免费插件-discuz插件-DZ天堂
  10. influxdb Measurements
  11. 网页自动弹出js——你懂的
  12. 《黑白团团队》第八次团队作业:Alpha冲刺 第一天
  13. jinkens搭建及部署项目
  14. mysql数据库查询工具''_数据库查询工具
  15. Apache Thrift 介绍
  16. 新手做shopee平台,出单后不会发货,我来为你解疑
  17. 时空数据可视化_穿越时空的可视化4陆地导航的上半生
  18. 10M/s,保姆级教程,制作自己的网盘不限速工具!
  19. 移动平均法 and 指数平滑法
  20. python读取bin文件,转成16进制通信协议

热门文章

  1. 智能名片小程序创建名片页的表单校验使用正则表达式整理
  2. 苹果手机上网速度慢_是什么原因导致手机网速慢!
  3. android 市场自动安装软件,烦人 安卓手机总是自动装应用 不怕 应用市场加把锁轻松搞定...
  4. linux 更改时间时区,Linux下修改系统时区
  5. 10款3D桌面推荐,很不错哦
  6. HTML5 2D平台游戏开发#8指令技
  7. 海湾gst5000主机消防广播_海湾GST5000消防主机调试步骤
  8. 5G消息富媒体最新形态
  9. Excel小笔记——冻结窗格
  10. 牛客 送分啦-QAQ