目录
3.图片(Images)属性和文字(Items)属性建立关联
ListView控件(列表视图控件)显示带图标的项的列表,可以显示大图标、小图标和数据。使用ListView控件可以创建类似Windows资源管理器右窗口的用户界面。
ListView控件可以通过View属性设置项在控件中显示的方式。
属性值 | 说明 |
Detail | 各项显示在不同的行上,并带有关于列中所排列的进一步信息。最左边的列包含一个小图标和标签,后面的列包含应用程序指定的子项。列显示一个标头,可以显示列的标题,可以在运行时改变列的大小。 |
LargeIcon | 默认模式,显示为大图标,其下面还有标签 |
List | 显示为小图标,其右边带有标签;排列在列中时没有列标头 |
SmallIcon | 显示为小图标,其右边带有标签; |
Tile | 完整大小图标,其右边带有标签和子项目信息。其子项目信息由应用程序指定。 |
一、在ListView控件中添加/移除/清空项
1.添加项
使用ListView控件的Items属性的Add()方法向控件中添加项,Add()方法用于将项添至项的集合中。
public virtual ListViewItem Add(string text,int imageIndex)
☑ text:项的文本。
☑ imageIndex:要为该项显示的图像的索引。
☑ 返回值:已添加到集合中的ListViewItem。
在ListView控件中添加完项目后,可以用CheckBoxes属性显示复选框,以便用户可以选中要对其执行操作的项。
2.移除和清空项
通过使用控件的Items属性的RemoveAt()或Clear()方法可以移除控件中的项。RemoveAt()方法移除指定的项,而Clear()方法移除列表中的所有项。
RemoveAt()方法用于移除集合中指定索引处的项。
public virtual void RemovedAt(int index)
index:从零开始的索引(属于要移除的项)。
Clear()方法用于从集合中移除所有项。
public virtual void Clear()
在删除ListView控件中的项目前,必须对项目的个数进行判断。如果为0,则不进行项目的删除;否则会触发异常
3.源码
//Form1.cs
//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 _03
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 初始化Form1
/// </summary>
private void Form1_Load(object sender, EventArgs e)
{
button1.Text = "提交";
button2.Text = "移除项";
button3.Text = "清空项";
label1.Text = "移除项index=1";
button1.Font = new System.Drawing.Font("宋体", 10F);
button2.Font = new System.Drawing.Font("宋体", 10F);
button3.Font = new System.Drawing.Font("宋体", 10F);
label1.Font = new System.Drawing.Font("宋体", 10F);
listView1.Font = new System.Drawing.Font("宋体", 10F);
}
/// <summary>
/// 添加项
/// </summary>
private void Button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("输入文字不能为空,请输入");
}
else
{
//listView1.Items.Add(textBox1.Text);
listView1.Items.Add(textBox1.Text.Trim()); //等效语句
/*textBox1.Text = string.Empty; */ //每次添加后清空文本框
textBox1.Text = ""; //等效语句
}
}
/// <summary>
/// 移除指定索引=1的项
/// </summary>
private void Button2_Click(object sender, EventArgs e)
{
if (listView1.Items.Count == 0)
{
MessageBox.Show("项目已空,请添加后再测试移除");
}
else if (listView1.Items.Count == 1)
{
listView1.Items.RemoveAt(0);
}
else
{
//listView1.Items.RemoveAt(1);
listView1.Items.RemoveAt(listView1.Items[1].Index); //等效语句
listView1.SelectedItems.Clear(); //可有可无
}
}
/// <summary>
/// 清空所有项
/// </summary>
private void Button3_Click(object sender, EventArgs e)
{
if(listView1.Items.Count == 0)
{
MessageBox.Show("项目已空,请添加后在测试清空");
}
else
{
listView1.Items.Clear();
}
}
}
}
4.生成效果
流程:加载 → 提交→移除2次→再加载2次→移除→清空→清空,有提示→移除,有提示。
二、选择ListView控件中的项
通过控件的Selected属性设置控件中的选择项。Selected属性用于获取或设置一个值,该值指示是否选定此项。
public bool Selected{get;set;}
属性值:如果选定此项,则为true;否则为false。
如果用按钮控件选择ListView控件中的项,除了用Selected属性选择指定的项外,还通过Focus()方法使ListView控件获得焦点。
三、为ListView控件中的项添加图标
如果为ListView控件中的项添加图标,则需要与ImageList控件相结合。
1.设置listView图片属性
设置listView1的图片(Images)属性(SmallImageList、LargeImageList或StateImageList),并与ImageList组件建立关联。
listView1.LargeImageList = imageList1;
imageList1.ImageSize = new Size(37, 36);
imageList1.Images.Add(Image.FromFile("01.png"));
imageList1.Images.Add(Image.FromFile("02.png"));
imageList1.Images.Add(Image.FromFile("03.jpg"));
2.设置listView文字属性
设置listView1的文字(Items)属性(SmallImageList、LargeImageList或StateImageList),并添加文字。
listView1.SmallImageList = imageList1;
listView1.Items.Add("支付宝");
listView1.Items.Add("微信支付");
listView1.Items.Add("银联钱包");
3.图片(Images)属性和文字(Items)属性建立关联
设置ImageIndex或StateImageIndex属性,ListView控件的图片(Images)属性和文字(Items)属性建立关联、配对。
这些属性可在代码中通过编程设置,也在“ListViewItem集合编辑器”中进行手动设置。
//Items[]和ImageIndex建立关联
listView1.Items[0].ImageIndex = 0;
listView1.Items[1].ImageIndex = 1;
listView1.Items[2].ImageIndex = 2;
4.源码
//Form1.cs
//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 _06
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// listView1填满父窗体
/// 设置listView1项目的图片是大图标37*36
/// 给imageList1添加图标
/// 设置listView1项目的文字是小图标
/// listView1项目索引
/// 选中listView1项目
/// </summary>
private void Form1_Load(object sender, EventArgs e)
{
listView1.Dock = DockStyle.Fill;
//设置图标属性
listView1.LargeImageList = imageList1;
imageList1.ImageSize = new Size(37, 36);
imageList1.Images.Add(Image.FromFile("01.png"));
imageList1.Images.Add(Image.FromFile("02.png"));
imageList1.Images.Add(Image.FromFile("03.jpg"));
//设置索引文字属性
listView1.SmallImageList = imageList1;
listView1.Items.Add("支付宝");
listView1.Items.Add("微信支付");
listView1.Items.Add("银联钱包");
//图标与索引文字建立关联
listView1.Items[0].ImageIndex = 0;
listView1.Items[1].ImageIndex = 1;
listView1.Items[2].ImageIndex = 2;
//选中
listView1.Items[2].Selected = true;
}
}
}
5.生成效果
四、在ListView控件中启用平铺视图
启用ListView控件的平铺视图功能,可以在图形信息和文本信息之间提供一种视觉平衡。为平铺视图中的某项显示的文本信息与为详细信息视图定义的列信息相同。在ListView控件中,平铺视图与分组功能或插入标记功能一起结合使用。如果要启用平铺视图,需要将View属性设置为Tile,可以通过手动设置TileSize属性来调整平铺的大小。
1.源码
//Form1.cs
//在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 _07
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
listView1.Dock = DockStyle.Fill; //listView1填满父窗体
listView1.View = View.Tile; //平铺
//设置listview1的Images图片属性
listView1.LargeImageList = imageList1;
imageList1.Images.Add(Image.FromFile("01.png"));
imageList1.Images.Add(Image.FromFile("02.png"));
imageList1.Images.Add(Image.FromFile("03.png"));
imageList1.Images.Add(Image.FromFile("04.png"));
imageList1.Images.Add(Image.FromFile("05.png"));
//设置listview1的Itemss文本属性
listView1.Items.Add("支付宝");
listView1.Items.Add("微信支付");
listView1.Items.Add("小度钱包");
listView1.Items.Add("京东白条");
listView1.Items.Add("苏宁任性付");
//建立Images图片属性和Itemss文本属性的关联
listView1.Items[0].ImageIndex = 0;
listView1.Items[1].ImageIndex = 1;
listView1.Items[2].ImageIndex = 2;
listView1.Items[3].ImageIndex = 3;
listView1.Items[4].ImageIndex = 4;
//设置listview1平铺每个项目尺寸
//listView1.TileSize = new System.Drawing.Size(100,40);
listView1.TileSize = new Size(100, 40); //等效语句
}
}
}
2.生成效果
五、为ListView控件中的项分组
设置各个项的System.Windows.Forms.ListViewItem.Group属性,可以向组分配项或在组之间移动项。如果想要临时禁用分组功能,可将ShowGroups属性设置为false。
1.添加组
使用Groups集合的Add()方法可以向控件中添加组,Add()方法用于将指定ListViewGroup添加到集合。
public int Add(ListViewGroup group)
☑ group:要添加到集合中的ListViewGroup。
☑ 返回值:该组在集合中的索引。或者,如果集合中已存在该组,则为-1。
2.移除组
使用Groups集合的RemoveAt或Clear()方法,可以移除指定的组或者移除所有的组。
RemoveAt()方法移除集合中指定索引位置的组。Clear()方法用于从集合中移除所有组。
public void RemoveAt(int index)
index:要移除的ListViewGroup的集合中的索引。
public void Clear()
3.向组分配项或在组之间移动项
设置各个项的System.Windows.Forms.ListViewItem.Group属性,可以向组分配项或在组之间移动项。
如果想要临时禁用分组功能,可将ShowGroups属性设置为false。
4.源码
//Form1.cs
//为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 _08
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//初始化listView1并通过切换View选项调试View效果
listView1.Dock = DockStyle.Fill;
//listView1.View = View.SmallIcon;
//listView1.View = View.LargeIcon;
//listView1.View = View.List; //此时,分组无效
//listView1.View = View.Details; //此时,只显示分组不显示Items
listView1.View = View.Tile; //比SmallIcon效果更好
//建立两个组
listView1.Groups.Add(new ListViewGroup("大型股份制银行", HorizontalAlignment.Left));
listView1.Groups.Add(new ListViewGroup("地方银行", HorizontalAlignment.Left));
//向空间中添加项目
listView1.Items.Add("中国银行");
listView1.Items.Add("中国工商银行");
listView1.Items.Add("中国建设银行");
listView1.Items.Add("中国农业银行");
listView1.Items.Add("徽商银行");
listView1.Items.Add("哈尔滨银行");
listView1.Items.Add("温州银行");
listView1.Items.Add("华夏银行");
//按照索引分组
listView1.Items[0].Group = listView1.Groups[0];
listView1.Items[1].Group = listView1.Groups[0];
listView1.Items[2].Group = listView1.Groups[0];
listView1.Items[3].Group = listView1.Groups[0];
listView1.Items[4].Group = listView1.Groups[1];
listView1.Items[5].Group = listView1.Groups[1];
listView1.Items[6].Group = listView1.Groups[1];
listView1.Items[7].Group = listView1.Groups[1];
//设置控件Size属性
listView1.TileSize = new Size(100, 40);
}
}
}