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 显示硬件具体信息,甚至包括一组八个的流 ...
随机推荐
- Photoshop CS6 for Mac简体中文正式 完美破解版 支持Retina屏
Photoshop CS6 MAC 中文版破解版 支持Retina屏 目前世界上“最好的化妆品”是一款叫做PhotoShop的产品,它可以帮你去除所有你不满意的地方.上周末,这款最好的化妆品推出了第十 ...
- 修饰者模式(装饰者模式,Decoration)
1. 装饰者模式,动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更加有弹性的替代方案. 2.组合和继承的区别 继承.继承是给一个类添加行为的比较有效的途径.通过使用继承,可以使得子类在拥有 ...
- IOS , plist 配置项说明
本文转载至 http://blog.csdn.net/fengsh998/article/details/8307424 Key:Application can be killed immediate ...
- juniper 550M訪问自身公网IP回流内部IP
拓扑图示意: 网关设备juniper 550M, untrust 区: 公网地址段22.22.22.22/29 trust区: 内部员工PC地址:172.16.4.x /24 trust区: ...
- 【Cocos2d-Js基础教学(4)cocostudio在cocos2dx-Js中的使用】
首先我们打开官方网站www.cocos2d-x.org,下载我们安装最新的cocostudio(cocos). 简介: Cocos Studio升级为cocos.更优秀的产品.更优质的服务.游戏开发一 ...
- Java WebService 简单实例[转]
http://www.cnblogs.com/yisheng163/p/4524808.html?utm_source=tuicool 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必 ...
- 公网IP、私网IP
公网.内网是两种Internet的接入方式.公网接入方式:上网的计算机得到的IP地址是Internet上的非保留地址,公网的计算机和Internet上的其他计算机可随意互相访问. NAT(Networ ...
- SAP的运输功能(转)
SAP的运输功能(transportation) transportation大体有三个作用: 1.运输计划transportation planning 概念:对outbound delivery ...
- CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动子进程
服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...
- C# 类型基础——你可能忽略的技术细节
引言 本文之初的目的是讲述设计模式中的 Prototype(原型)模式,但是如果想较清楚地弄明白这个模式,需要了解对象克隆(Object Clone),Clone 其实也就是对象复制.复制又分为了浅度 ...