C# ListView 在指定行后面插入新行,并对行号重新排序。
2017-03-16 20:32
375 查看
本次来讲讲在c#中如何用ListView实现在指定行之后插入新的一行,并且不影响原有行的内容,最后对行号重新排序。
关于c#中用ListView的用法,这里有讲解:ListView详解 。不太熟悉的朋友可以看看。
首先:要实现的效果如下图:
实现步骤如下:
1.新建一个窗体,拖放好两个button和ListView,一个button命名为:button_AddNewRow,Text为:增加新行。用于在ListView中增加行,另一个button命名为:button_InsertNewRow,Text为:插入新行。用于在ListView中插入行。ListView命名为:filesList
。(以上名字自己喜欢就好)
2.拖好控件,改好名字后,先初始化ListView。在窗体类中,添加下面的方法代码:
3. 初始化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对象:list list.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#.net获取指定文件夹下的所有jpg文件,并按文件创建时间排序
- C#算法----(二)插入排序 (转载)
- 在C#中实现对ListView点击列标题自动排序功能
- c# 排序 算法 函数 冒泡 选择 插入 希尔
- 以指定字符重新划分段落并插入时间序列数(VBA)
- 在C#中实现对ListView点击列标题自动排序功能
- C# 数据结构与算法系列(六) 排序之直接插入排序法
- C# 实现排序--冒泡--选择--插入
- 非常小的shell: 指定行号,插入文本
- listview 删除和插入 指定行
- C#算法 -- (二)插入排序
- C# ListView中点击表头ColumnClick实现对相应列的排序
- 在C#中实现对ListView点击列标题自动排序功能
- 在C#中实现对ListView点击列标题自动排序功能
- C#插入排序
- C# 常用排序方法 冒泡排序,直接选择排序,直接插入排序
- 关于listview列排序后,重新再加载数据报错的解决方案
- 用sql 语句实现在指定列后面插入一列
- C#插入排序算法实现
- C# listview 读取指定行数据