C# ListView 在指定行后面插入新行,并对行号重新排序。
本次来讲讲在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 在指定行后面插入新行,并对行号重新排序。相关推荐
- SQL Server数据库中、获得刚插入新记录的自动ID号
以下的文章主要是介绍在SQL Server数据库中正确获得刚插入一条新记录的自动ID号的实际操作过程,下面就是文章对其的主要内容的具体描述,望大家在浏览之后会对其有更深的了解. 使用[IDENT_CU ...
- 计算机做表格的行高和列宽,表格中列和行的插入与删除及行高和列宽的调整——想象力电脑应用...
大多数数据输入到工作表后都需要进行管理和格式设置,以获得更好的显示效果,也便于分辨各类型的数据.这里我们将介绍行或列的插入与删除和行高和列宽的调整. 一.行或列的插入与删除 在输入数据时,如果遗漏了某 ...
- Txt、记事本等文本文件怎么批量插入标题?怎么在指定位置插入新的内容?
概要:在我们日常办公中,经常会碰到需要给一批 Txt.Json 或者记事本等各种文本文件批量插入一段新的内容,或者将指定文本文件批量插入一批文本文件中的需求.「我的ABC软件工具箱」就实现了批量在指定 ...
- 向EXCEL模板文件中写入数据和插入新行
在很多情况下,我们需要将程序产生的一些数据按照一些用户要求的EXCEL文件模板格式进行填写,将指定的数据项写入指定的单元格.在某些特定的情况下,可能还需要进行动态的行插入,比如数量不确定的点坐标信息, ...
- 关于openpyxl里“合并单元格和插入新行”与“冻结窗格”的坑
简单记录一下. 1. 在合并单元格上方插入新行,会导致合并位置错误.这应该算是一个bug. 问题描述: 假设"A5"+"A6"是合并的单元格,如果我要在A5上面 ...
- java excel 插入新行_excel:插入行更新公式
我尝试编写一个宏,双击一个单元格,在该单元格下面插入一个新的行与一些公式 . 对我来说重要的是,如果我再次双击单元格,则使用正确的索引更新先前插入的行的公式 . 例如,在下面的代码中,双击A1将在第2 ...
- java excel 插入新行_POI ,Java 操作 Excel 實現行的插入(insert row)
POI ,Java 操作 Excel 實現行的插入(insert row) 前幾天,正在做一個項目,主要用 POI 來操作 Excel 其中,要使用一個,插入功能.主要是因為從數據庫,返回結果集(數據 ...
- Pandas操作dataframe对所有列/行求和 ,对指定列/行求和,对某一列/行求和,并添加新的列/行
计算各行数据总和并作为新列添加到末尾 计算各列数据总和并作为新行添加到末尾 import pandas as pd t=[[1,2,3],[4,5,6],[7,8,9]] df=pd.DataFram ...
- POI Excel 插入新的行,下面的行动态移动
在做Excel 模板时,会有遇到 模板行数不固定,如下图 需要在行次4下面再插入一行:注意:(插入的行如果是下面空白行,需要创建行) 解决方法是使用shifRows方法,第1个参数是指要开始插入的 ...
- Excel:将指定的单元格移动n行,实现行的插入
在现有的Excel表格中,指定某一行插入数据,下面的单元格往下移动 移动前: 如上图,Excel 第一个单元格"广东"的索引是0,在"广东"下插入一条" ...
最新文章
- CodeForces - 1360G A/B Matrix(最大流)
- 运维总监聂鑫:腾讯海量监控体系经验分享
- Linux的实际操作:文件目录类的实用指令 (显示路径pwd 显示文件ls 更改目录cd)
- gitlab与已安装nginx(tengine)冲突解决方案,使用自己安装的nginx(tengine)
- iphone 流媒体
- CentOS设置时区
- Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
- 世界各国各地区名称代码对应表
- DZ免费插件-discuz插件-DZ天堂
- influxdb Measurements
- 网页自动弹出js——你懂的
- 《黑白团团队》第八次团队作业:Alpha冲刺 第一天
- jinkens搭建及部署项目
- mysql数据库查询工具''_数据库查询工具
- Apache Thrift 介绍
- 新手做shopee平台,出单后不会发货,我来为你解疑
- 时空数据可视化_穿越时空的可视化4陆地导航的上半生
- 10M/s,保姆级教程,制作自己的网盘不限速工具!
- 移动平均法 and 指数平滑法
- python读取bin文件,转成16进制通信协议