ListView控件是列表視圖控件,說是列表視圖,其實它有四種顯示方式,Detail,Large,Small和List,使用ListView控件,我們可以讓我們的數據以不同的形式進行展示,下面我們通過代碼進行學習
1.界面佈局
界面佈局如圖所示,最主要的就是我們的ListView控件,然後有6個Button實現6種功能,一個TextBox用來顯示文本,爲了顯示圖片,我們還需要一個ImageList
2.用法示例
用法示例見代碼,需要注意的一點是,默認ListView是不能高亮整行的,想要高亮整行,必須將FullRowSelect置爲True纔可以
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class FormMain : Form
{
public FormMain(ArrayList arrip_list)
{
InitializeComponent();
this.listView1.View = View.Details;
this.listView1.SmallImageList = this.imageList1;
this.listView1.Columns.Add("列標題1", 100, HorizontalAlignment.Left);
this.listView1.Columns.Add("列標題2", 100, HorizontalAlignment.Left);
this.listView1.Columns.Add("列標題3", 100, HorizontalAlignment.Left);
this.listView1.Columns.Add("列標題4", 100, HorizontalAlignment.Left);
this.listView1.BeginUpdate(); //數據更新,UI暫時掛起,直到EndUpdate繪製控件,可以有效避免閃爍並大大提高加載速度
for (int i = 0; i < imageList1.Images.Count; i++) //添加10行數據
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i; //通過與imageList綁定,顯示imageList中第i項圖標
lvi.Text = "item" + i;
lvi.SubItems.Add("第2列,第" + i + "行");
lvi.SubItems.Add("第3列,第" + i + "行");
this.listView1.Items.Add(lvi);
}
this.listView1.EndUpdate(); //結束數據處理,UI界面一次性繪製。
}
//Detail
private void button1_Click(object sender, EventArgs e)
{
this.listView1.Items.Clear(); //先移除所有的項,避免重複添加
this.listView1.View = View.Details;
this.listView1.LargeImageList = this.imageList1;
this.listView1.BeginUpdate(); //數據更新,UI暫時掛起,直到EndUpdate繪製控件,可以有效避免閃爍並大大提高加載速度
for (int i = 0; i < imageList1.Images.Count; i++) //添加10行數據
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i; //通過與imageList綁定,顯示imageList中第i項圖標
lvi.Text = "item" + i;
lvi.SubItems.Add("第2列,第" + i + "行");
lvi.SubItems.Add("第3列,第" + i + "行");
this.listView1.Items.Add(lvi);
}
this.listView1.EndUpdate(); //結束數據處理,UI界面一次性繪製。
}
//Large
private void button2_Click(object sender, EventArgs e)
{
this.listView1.Items.Clear(); //先移除所有的項,避免重複添加
this.listView1.View = View.LargeIcon;
this.listView1.LargeImageList = this.imageList1;
this.listView1.BeginUpdate();
for (int i = 0; i < imageList1.Images.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
lvi.Text = "item" + i;
this.listView1.Items.Add(lvi);
}
this.listView1.EndUpdate();
}
//Small
private void button3_Click(object sender, EventArgs e)
{
this.listView1.Items.Clear(); //先移除所有的項,避免重複添加
this.listView1.View = View.SmallIcon;
this.listView1.SmallImageList = this.imageList1;
this.listView1.BeginUpdate();
for (int i = 0; i < imageList1.Images.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
lvi.Text = "item" + i;
this.listView1.Items.Add(lvi);
}
this.listView1.EndUpdate();
}
//List
private void button4_Click(object sender, EventArgs e)
{
this.listView1.Items.Clear(); //先移除所有的項,避免重複添加
this.listView1.View = View.List;
this.listView1.SmallImageList = this.imageList1;
this.listView1.BeginUpdate();
for (int i = 0; i < imageList1.Images.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
lvi.Text = "item" + i;
this.listView1.Items.Add(lvi);
}
this.listView1.EndUpdate();
}
private void button5_Click(object sender, EventArgs e)
{
this.listView1.Items.Clear(); //先移除所有的項,避免重複添加
ListViewGroup man_group = new ListViewGroup(); //創建男生分組
man_group.Header = "男生"; //設置組的標題。
//man_group.Name = "man"; //設置組的名稱。
man_group.HeaderAlignment = HorizontalAlignment.Left; //設置組標題文本的對齊方式。(默認爲Left)
ListViewGroup women_group = new ListViewGroup(); //創建女生分組
women_group.Header = "女生";
//women_group.Name = "women";
women_group.HeaderAlignment = HorizontalAlignment.Center; //組標題居中對齊
this.listView1.Groups.Add(man_group); //把男生分組添加到listview中
this.listView1.Groups.Add(women_group); //把男生分組添加到listview中
this.listView1.ShowGroups = true; //記得要設置ShowGroups屬性爲true(默認是false),否則顯示不出分組
for (int i = 0; i < imageList1.Images.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
lvi.Text = "item"+i;
lvi.ForeColor = Color.Blue; //設置行顏色
lvi.SubItems.Add("第2列,第"+i+"行");
lvi.SubItems.Add("第3列,第"+i+"行");
//前五項給man分組,後五項給women分組
if (i < imageList1.Images.Count / 2)
man_group.Items.Add(lvi); //分組添加子項
else
women_group.Items.Add(lvi);
this.listView1.Items.Add(lvi);
}
}
private void button6_Click(object sender, EventArgs e)
{
//顯示選中內容
if (listView1.SelectedItems.Count != 0)
{
//清空原來的內容
textBox1.Text = "";
//SelectedItem是可以多選的,單選的話下標取0即可
//多選的話,索引是從0開始
for (int i = 0; i < listView1.SelectedItems[0].SubItems.Count; i++)
{
textBox1.Text += listView1.SelectedItems[0].SubItems[i].Text;
textBox1.Text += ",";
}
}
else
{
MessageBox.Show("未選中任何項");
}
}
}
}