C#中ListView的简单使用方法
ListView是用于显示数据的,先在窗体中拉一个lisview控件,还有一些新增、修改、删除、查询按钮和文本框,控件名称为listview,按钮为btnInsert,btnUpate,btnDeleteOne,btnDelete,btnSelect,文本框的名称为txtName,txtSex,txtPhone,txtAddress,设计如下图所示:

写完这些后,先设置listView的一些属性和列标头,如图所示

具体代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestGame
{
public partial class ListViewForm : Form
{
public ListViewForm()
{
InitializeComponent();
}
/// <summary>
/// 窗体加载时调用初始化的Listview方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ListViewForm_Load(object sender, EventArgs e)
{
InitListView(this.listView);
}
/// <summary>
/// 当点击新增时调用的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnInsert_Click(object sender, EventArgs e)
{
InsertListView(this.listView);
}
/// <summary>
/// 当点击修改时调用的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnUpdate_Click(object sender, EventArgs e)
{
UpdateListView(this.listView);
}
/// <summary>
/// 新增方法
/// </summary>
/// <param name="lv"></param>
/// <returns></returns>
public ListView InsertListView(ListView lv) {
//获取文本框中的值
string name = this.txtName.Text;
string sex = this.txtSex.Text;
string phone = this.txtPhone.Text;
string address = this.txtAddress.Text;
//创建行对象
ListViewItem li = new ListViewItem(name);
//添加同一行的数据
li.SubItems.Add(sex);
li.SubItems.Add(phone);
li.SubItems.Add(address);
//将行对象绑定在listview对象中
lv.Items.Add(li);
MessageBox.Show("新增数据成功!");
return lv;
}
/// <summary>
/// 初始化ListView的方法
/// </summary>
/// <param name="lv"></param>
public void InitListView(ListView lv) {
//添加列名
ColumnHeader c1 = new ColumnHeader();
c1.Width = 100;
c1.Text = "姓名";
ColumnHeader c2 = new ColumnHeader();
c2.Width = 100;
c2.Text = "性别";
ColumnHeader c3 = new ColumnHeader();
c3.Width = 100;
c3.Text = "电话";
//设置属性
lv.GridLines = true; //显示网格线
lv.FullRowSelect = true; //显示全行
lv.MultiSelect = false; //设置只能单选
lv.View = View.Details; //设置显示模式为详细
lv.HoverSelection = true; //当鼠标停留数秒后自动选择
//把列名添加到listview中
lv.Columns.Add(c1);
lv.Columns.Add(c2);
lv.Columns.Add(c3);
lv.Columns.Add("籍贯", 100); //相当于上面的添加列名的步骤
}
/// <summary>
/// 修改的方法
/// </summary>
/// <param name="lv"></param>
/// <returns></returns>
public ListView UpdateListView(ListView lv){
if (lv.SelectedItems.Count > 0) {
//把修改后的文本框内容添加到listview中
lv.SelectedItems[0].SubItems[0].Text = this.txtName.Text;
lv.SelectedItems[0].SubItems[1].Text = this.txtSex.Text;
lv.SelectedItems[0].SubItems[2].Text = this.txtPhone.Text;
lv.SelectedItems[0].SubItems[3].Text = this.txtAddress.Text;
MessageBox.Show("修改数据成功!");
}
return lv;
}
/// <summary>
/// 当listview选中状态改变时调用的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
//当有选择行的数据时
if (this.listView.SelectedItems.Count > 0) {
//把选择的信息显示在相应的文本框中
this.txtName.Text = this.listView.SelectedItems[0].SubItems[0].Text;
this.txtSex.Text = this.listView.SelectedItems[0].SubItems[1].Text;
this.txtPhone.Text = this.listView.SelectedItems[0].SubItems[2].Text;
this.txtAddress.Text = this.listView.SelectedItems[0].SubItems[3].Text;
}
}
/// <summary>
/// 移除选中行的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDeleteOne_Click(object sender, EventArgs e)
{
if (this.listView.SelectedItems.Count > 0) {
//移除整一行
this.listView.SelectedItems[0].Remove();
}
}
/// <summary>
/// 移除所有行的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDeleteAll_Click(object sender, EventArgs e)
{
//清空整个listview中的行
this.listView.Items.Clear();
}
private void btnSelect_Click(object sender, EventArgs e)
{
SelectListView(this.listView);
}
public void SelectListView(ListView lv) {
//列表有数据
if (lv.Items.Count > 0)
{
foreach (ListViewItem li in lv.Items)
{
if (li.SubItems[0].Text == this.txtExitName.Text)
{
MessageBox.Show("存在该名称");
return;
}
}
MessageBox.Show("没有找到该姓名");
}
else {
MessageBox.Show("未输入列表数据");
}
}
}
}
最后运行效果是这样的,这是新增数据时的效果

这是修改数据后的效果:

这是查询是否存在这个名字的效果:

删除选中行和删除全部就不显示出来了。
C#中ListView的简单使用方法的更多相关文章
- C#中ListView易错的方法
现在有一个ListView(lv1),有2列. ListViewItem lvi = new ListViewItem(); lvi.Text = "语文"; lvi.SubIte ...
- Android中ListView的简单使用
动态添加单行列表: 首先前提是你的布局文件里有一个ListView 单行列表的添加只需要一个list集合即可,使用ArrayAdapter数组适配器绑定更新就行了 首先声明一个ArrayAdapter ...
- ABAP中正则表达式的简单使用方法 (转老白BLOG)
在一个论坛上面看到有人在问正则表达式的问题,特举例简单说明一下.另外,REPLACE也支持REGEX关键字.最后:只能是ECC6或者更高版本才可以(ABAP supports POSIX regula ...
- Android中ListView的几种常见的优化方法
Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapte ...
- PhotoShop中画圆角矩形最简单方法(图文并茂)!
PhotoShop中画圆角矩形最简单方法(图文并茂)! 1. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHhubjUyMA==/font/5a6L5L ...
- LaTeX中表格多行显示的最简单设置方法
这事实上是一个非常easy的问题,可是这两天发现我之前的解决方式太麻烦了.简介一下这样的最简单的方法: 之前设置多行显示的时候,用类似于以下这样的方法进行多行显示: \begin{table} \ne ...
- C#中缓存的简单方法及使用Sql设置缓存依赖项
概述 使用Cache高速缓存可以提高数据的读取速度,减少服务器与客户端之间的数据交互.因为Cache一经创建就会占用服务器上的资源,所以Cache并不是越多越好,一般用于数据较固定,使用较频繁的地方. ...
- linux中内存泄漏的检測(一)最简单的方法
什么是内存泄漏 内存泄漏是指程序动态申请的内存在使用完后没有释放,导致这段内存不能被操作系统回收再利用. 比如这段程序,申请了4个字节的空间但没有释放,有4个字节的内存泄漏. #include < ...
- 最简单的方法是使用标准的 Linux GUI 程序之一: i-nex 收集硬件信息,并且类似于 Windows 下流行的 CPU-Z 的显示。 HardInfo 显示硬件具体信息,甚至包括一组八个的流行的性能基准程序,你可以用它们评估你的系统性能。 KInfoCenter 和 Lshw 也能够显示硬件的详细信息,并且可以从许多软件仓库中获取。
最简单的方法是使用标准的 Linux GUI 程序之一: i-nex 收集硬件信息,并且类似于 Windows 下流行的 CPU-Z 的显示. HardInfo 显示硬件具体信息,甚至包括一组八个的流 ...
随机推荐
- LNMP软件安装所在的目录详细
LNMP相关软件安装目录Nginx 目录: /usr/local/nginx/MySQL 目录 : /usr/local/mysql/MySQL数据库所在目录:/usr/local/mysql/var ...
- UE4在Android调用Project Tango
Project Tango应该说是Google一试水AR的设备,其中Project Tango主要二个功能,一个是获取深度信息,如MS的Kinect,有相当多的设备都有这个功能,二是第一人称相对定位, ...
- 【Cocos2d-Js基础教学(7)界面UI更新方法(会用到第三方类库)】
我们游戏中会遇到很多UI更新的时候,大部分时候我们会remove该节点,再重新绘制的方法来进行UI更新. 但是这种更新效率并不高,这里我推荐大家一个第三方的库,来通过注册更新的方式来对UI进行更新管理 ...
- 如何改变Activity在当前任务堆栈中的顺序,Intent参数大全
引用:http://blog.csdn.net/think_soft/article/details/7477072 本示例演示如何通过设置Intent对象的标记,来改变当前任务堆栈中既存的Activ ...
- android studio ndk使用openMP
好久没碰ndk了,之前都是在eclipse下写makefile配置c++程序的,现在发现主流都是用android studio,eclipse俨然已经被遗弃了,正好最近项目需要用openMP做算法加速 ...
- Apache配置多个网站的方法
Apache的虚拟主机是一种允许在同一台机器上,运行超过一个网站的解决方案.虚拟主机有两种,一种叫基于IP的(IP-based),另一种叫基于名字的(name-based).虚拟主机的存在,对用户来说 ...
- Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!
记得2014年春节期间,有博客园的网友通过QQ向我咨询Sharepoint 2013列表视图和字段权限扩展,因为之前他看到我博客介绍Sharepoint 2010列表视图和字段的权限控制扩展使用,问有 ...
- 获取全国市以及地理坐标,各大坐标系北斗,百度,WGS-84坐标系的转换,有图,有代码
1 先上坐标取到的值: 获取到的坐标部分如下: '北京市':[116.39564503788,39.92998577808], '天津市':[117.21081309155,39.1439299033 ...
- Go语言TCP/UDP Socket编程
1. TCP编程 TCPClient // TCPClient project main.go package main import ( "fmt" "net" ...
- 二十三、【开源】EFW框架Web前端开发之常用组件(FusionCharts图表、ReportAll报表等)
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...