C#应用程序界面开发进阶——高级窗体控件(2)——列表视图控件(最后一个代码不行)

列表视图(ListView)控件是Windows列表视图控件,用于显示带图标的项的列表。

创建列表视图控件

为列表视图控件添加项有以下两种方法。

(1)直接单击控件上方的小箭头,然后再单击“编辑项”,就会弹出“ListViewItem集合编辑器”对话框。

  

通过Text和Font属性,可以修改项的名称和字体大小。

(2)通过使用控件的Items属性的Add方法和RemoveAt方法,实现项的添加和删除。

编写程序,在ListView控件中添加和删除项。

 

 添加两个button控件,button1和button2分别是添加和移除。

 添加TextBox控件

在button1_Click事件,并调用Add方法,将创建好的项添加到集合中;

在button2_Click事件,首先对ListView控件中的项进行判断,如果集合中还存在项,就调用RemoveAt方法,删除鼠标选中的项。

 运行结果如下:

输入文字,点击添加

点击某一个文字,再点击移除

使用列表视图控件

ListView控件可以通过View属性显示可用五种不同视图之一显示的项集合。

View属性
属性值说明
LargeIcon在项文本旁显示大图标,如果控件足够大,则项显示在多列中
SmallIcon除显示小图标外,其他方面与大图标视图模式相同
List显示小图标,但总是显示在单列中
Details在多列中显示项
Tile每个项都显示为一个完整大小的图标,在它的左边带项标签和子项信息。(仅支持Windows XP/Server 2003)

1、为ListView控件的项分组

使用ListView控件的分组功能可以用分组形式显示相关组项。在屏幕上,这些组由包含组标题的水平组标头分隔。

为ListView控件的项分组有以下两种方法。

(1)ListView控件的项添加完成之后,直接单击控件上方的小箭头。

然后再单击“编辑组”,就会弹出“ListViewGroup集合编辑器”对话框,并通过Header属性,对ListViewGroup1的组命名为“亚洲”,对ListViewGroup2的组命名为“欧洲”。

接着在ListViewItem集合编辑器中,选择Group属性,为ListView控件的添加项选择分组。

(2)用编程的方式可以为ListView控件中的项分组,还可以将一个组中的项移至另一组中。

编写程序,为ListView控件中的项分组。

在Form1窗体中添加ListView控件

 在Form1_Load事件中为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 WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //设置listView1控件的View属性
            listView1.View = View.SmallIcon;
            //向控件中添加项目
            listView1.Items.Add("中国");
            listView1.Items.Add("日本");
            listView1.Items.Add("韩国");
            listView1.Items.Add("美国");
            listView1.Items.Add("英国");
            //为listView1控件建立两个组
            listView1.Groups.Add(new ListViewGroup("亚洲", HorizontalAlignment.Left));
            listView1.Groups.Add(new ListViewGroup("欧洲", HorizontalAlignment.Left));
            //将listView1控件中的索引值 0、1、2的项添加到第一个分组
            listView1.Items[0].Group = listView1.Groups[0];
            listView1.Items[1].Group = listView1.Groups[0];
            listView1.Items[2].Group = listView1.Groups[0];
            //将listView1控件中的索引值 3、4的项添加到第一个分组
            listView1.Items[3].Group = listView1.Groups[1];
            listView1.Items[4].Group = listView1.Groups[1];
        }
    }
}

 运行结果错误,没注意发生Form1_Load事件:

 完整代码:

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 WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //设置listView1控件的View属性
            listView1.View = View.SmallIcon;
            //向控件中添加项目
            listView1.Items.Add("中国");
            listView1.Items.Add("日本");
            listView1.Items.Add("韩国");
            listView1.Items.Add("美国");
            listView1.Items.Add("英国");
            //为listView1控件建立两个组
            listView1.Groups.Add(new ListViewGroup("亚洲", HorizontalAlignment.Left));
            listView1.Groups.Add(new ListViewGroup("欧洲", HorizontalAlignment.Left));
            //将listView1控件中的索引值 0、1、2的项添加到第一个分组
            listView1.Items[0].Group = listView1.Groups[0];
            listView1.Items[1].Group = listView1.Groups[0];
            listView1.Items[2].Group = listView1.Groups[0];
            //将listView1控件中的索引值 3、4的项添加到第一个分组
            listView1.Items[3].Group = listView1.Groups[1];
            listView1.Items[4].Group = listView1.Groups[1];
        }
    }
}

运行结果如下:

2、为ListView控件中的项添加图标

如果用户要为ListView控件中的项添加图标,由需要与ImageList控件结合使用。这里需要注意,由于ImageList控件是一个组件,所以是没有可视化界面的。

为ListView控件中的项添加图标具体步骤如下:

(1)在Form窗体中添加ListView控件并添加相应的项,然后添加ImageList控件。选择ImageList控件的Images属性,会弹出“图像集合编辑器”对话框,再单击“添加”按钮,就可以将文件夹中的图片放入成员中。

 

 

 

 
 

(2)找到ListView控件的SmallImageList、LargeImageList和StateImageList属性,并将它们设置为想要使用的现在imageList1组件

 

(3)打开LiveView控件的“ListViewItem集合编辑器”对话框,选择ImageIndex属性,依次为成员中的项添加图标。

  

3、为ListView控件中的项添加列表

直接单击控件上方的小箭头,然后再单击“编辑列”,就会弹出 “Column Header集合编辑器”对话框。

 

在Column Header集合编辑器中,用户可以根据国家的属性,在成员中添加项的四个列表头,分别为chID、chEngName、chCountry和chCaptial,用于表示序号、英文名称、国家和首都。这些都可以在Name属性和Text属性中修改。

 

 

 

编写程序,在Listview控件中添加五个国家的项,并将这五个国家的序号、英文名称、国家和首都设计成列表的形式。然后以List、Detals和Title属性的形式显示。

在Form1窗体中添加ListView控件

添加一个ImageList控件 ,用来设置图标的大小

 

 在窗体中添加Label控件和ComboBox控件,用来提示List、Detals和Tile属性是三种

 

 

 

 

完整代码:

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 WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string[,] myCountry = { { "China","中国","北京"},{"Japan","日本","东京" },{"Korea","韩国","首尔" },{"America","美国","华盛顿" },{"England","英国","伦敦" } };
            for(int i=0;i<myCountry.Length/3;i++)
            {
                ListViewItem mylvi = listView1.Items.Add(i.ToString());
                mylvi.ImageIndex = i;
                mylvi.SubItems.Add(myCountry[i, 0]);
                mylvi.SubItems.Add(myCountry[i, 1]);
                mylvi.SubItems.Add(myCountry[i, 2]);
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(comboBox1.SelectedItem.ToString()=="Details")
            {
                listView1.View = View.Details;
            }
            if (comboBox1.SelectedItem.ToString() == "List")
            {
                listView1.View = View.List;
            }
            if (comboBox1.SelectedItem.ToString() == "Tile")
            {
                listView1.View = View.Tile;
            }
        }
    }
}

在代码中,首选定义一个三行三列的二维数组,并通过for循环遍历出来;然后在comboBox1_SelectedIndexChanged事件中,判断comboBox1控件中的项是否与List、Details和Tile属性相等,如果相等,就按照该属性的方法排列ListView控件中的项。 

运行结果:

 在ListView控件中的项添加列表之后,再次运行结果,还是不行。

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值