winform控件之ListView

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("未選中任何項");
            }
        }
    }
}


 

3.參考文獻

C# ListView用法詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章