C# WinForm中Listview的使用

本文介绍了在C# WinForm应用程序中如何使用Listview控件来展示图标和详细信息,以及如何实现大中小图标切换的功能。通过示例代码展示了Listview的基本用法。

在WinForm中,有时候需要在画面上显示图标以及详情之类的,还有的更多功能需要大中小图标的切换显示,这时候可以考虑Listview控件。代码如下:

		private void BoardDisplay(int kbn)
		{
			this.listView1.Clear();
			
			if (kbn == 0)
			{
				ImageLoad(1);
				if (board_nums == 0)
				{
					return;
				}
				this.listView1.View = View.List;
				this.listView1.SmallImageList = this.imageList1;
				this.listView1.BeginUpdate();
				for (int i = 1; i <= board_nums; i++)
				{
					ListViewItem boardList = new ListViewItem();
					boardList.ImageIndex = i - 1;
					boardList.Text = board_names[i - 1];
					this.listView1.Items.Add(boardList);
				}
				this.listView1.EndUpdate();
			}
			else if (kbn == 1)
			{
				ImageLoad(2);
				if (board_nums == 0)
				{
					return;
				}
				this.listView1.View = View.SmallIcon;
				this.listView1.SmallImageList = this.imageList2;
				this.listView1.BeginUpdate();
				for (int i = 1; i <= board_nums; i++)
				{
					ListViewItem boardList = new ListViewItem();
					boardList.ImageIndex = i - 1;
					boardList.Text = board_names[i - 1];
					this.listView1.Items.Add(boardList);
				}
				this.listView1.EndUpdate();
			}
			else
			{
				ImageLoad(3);
				if (board_nums == 0)
				{
					return;
				}
				this.listView1.View = View.LargeIcon;
				this.listView1.LargeImageList = this.imageList3;
				this.listView1.BeginUpdate();
				for (int i = 1; i <= board_nums; i++)
				{
					ListViewItem boardList = new ListViewItem();
					boardList.ImageIndex = i - 1;
					boardList.Text = board_names[i - 1];
					this.listView1.Items.Add(boardList);
				}
				this.listView1.EndUpdate();
			}
		}
以上代码中的kbn是用来区别大中小图标的显示的,三种情况下Listview关联三个不同的Imagelist,三个imagelist中分别存放不同尺寸的图标。关联imagelist之前,要先将图片加载到imagelist中,即ImageLoad()方法(如下),再将此时的显示形式设置为相应的形式,即listview1.View = View.LargeIcon;这句话就是显示设置为大图标显示,这里显示共有5种属性。然后关联相应的imagelist。BeginUpdate()和EndUpdate()用于在向listview中加载显示项的过程中将listview置于挂起状态,令显示更加稳定。

		private void ImageLoad(int kbn)
		{
			board_nums = 0;
			DirectoryInfo di = new DirectoryInfo(kojiFolderPC);
			if (!di.Exists)
			{
				//MessageBox.Show("画像のパスが存在しません");
				return;
			}
			if (di.GetFiles("*" + Para.iconType).Length != 0)
			{
				switch (kbn)
				{
					case 1:
						imageList1.Images.Clear();
						board_names = new string[di.GetFiles("*" + Para.iconType).Length];
						foreach (FileInfo fi in di.GetFiles("*" + Para.iconType))
						{
							imageList1.Images.Add(Image.FromFile(fi.FullName));
							board_names[board_nums] = fi.Name.Substring(0, fi.Name.Length - 4);
							board_nums++;
						}
						break;
					case 2:
						imageList2.Images.Clear();
						board_names = new string[di.GetFiles("*" + Para.iconType).Length];
						foreach (FileInfo fi in di.GetFiles("*" + Para.iconType))
						{
							imageList2.Images.Add(Image.FromFile(fi.FullName));
							board_names[board_nums] = fi.Name.Substring(0, fi.Name.Length - 4);
							board_nums++;
						}
						break;
					case 3:
						imageList3.Images.Clear();
						board_names = new string[di.GetFiles("*" + Para.iconType).Length];
						foreach (FileInfo fi in di.GetFiles("*" + Para.iconType))
						{
							imageList3.Images.Add(Image.FromFile(fi.FullName));
							board_names[board_nums] = fi.Name.Substring(0, fi.Name.Length - 4);
							board_nums++;
						}
						break;
				}
			}
		}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值