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控件中的项添加列表之后,再次运行结果,还是不行。

 

QQ好友例表控件 带实例和源码 //1. 属性列表: // SelectionMode 组件中条目的选择类型,即多选(Multiple)、单选(Single) // Rows 列表框中显示总共多少行 // Selected 检测条目是否被选中 // SelectedItem 返回的类型是ListItem,获得列表框中被选择的条目 // Count 列表框中条目的总数 // SelectedIndex 列表框中被选择项的索引值 // Items 泛指列表框中的所有项,每一项的类型都是ListItem //2. 取列表框中被选中的值 // ListBox.SelectedValue //3. 动态的添加列表框中的项: // ListBox.Items.Add("所要添加的项"); //4. 移出指定项: // //首先判断列表框中的项是否大于0 // If(ListBox.Items.Count > 0 ) // { ////移出选择的项 //ListBox.Items.Remove(ListBox.SelectedItem); // } //5. 清空所有项: // //首先判断列表框中的项是否大于0 // If(ListBox.Items.Count > 0 ) // { ////清空所有项 //ListBox.Items.Clear(); // } //6. 列表框可以一次选择多项: // 只需设置列表框的属性 SelectionMode="Multiple",按Ctrl可以多选 //7. 两个列表框联动,即两级联动菜单 // //判断第一个列表框中被选中的值 // switch(ListBox1.SelectValue) // { ////如果是"A",第二个列表框中就添加这些: //case "A" // ListBox2.Items.Clear(); // ListBox2.Items.Add("A1"); // ListBox2.Items.Add("A2"); // ListBox2.Items.Add("A3"); ////如果是"B",第二个列表框中就添加这些: //case "B" // ListBox2.Items.Clear(); // ListBox2.Items.Add("B1"); // ListBox2.Items.Add("B2"); // ListBox2.Items.Add("B3"); // } //8. 实现列表框中项的移位 // 即:向上移位、向下移位 // 具体的思路为:创建一个ListBox对象,并把要移位的项先暂放在这个对象中。 // 如果是向上移位,就是把当前选定项的的上一项的值赋给当前选定的项,然后 // 把刚才新加入的对象的值,再附给当前选定项的前一项。 // 具体代码为: // //定义一个变量,作移位用 // index = -1; // //将当前条目的文本以及值都保存到一个临时变量里面 // ListItem lt=new ListItem (ListBox.SelectedItem.Text,ListBox.SelectedValue); // //被选中的项的值等于上一条或下一条的值 // ListBox.Items[ListBox.SelectedIndex].Text=ListBox.Items[ListBox.SelectedIndex + index].Text; // //被选中的项的值等于上一条或下一条的值 // ListBox.Items[ListBox.SelectedIndex].Value=ListBox.Items[ListBox.SelectedIndex + index].Value; // //把被选中项的前一条或下一条的值用临时变量中的取代 // ListBox.Items[ListBox.SelectedIndex].Test=lt.Test; // //把被选中项的前一条或下一条的值用临时变量中的取代 // ListBox.Items[ListBox.SelectedIndex].Value=lt.Value; // //把鼠标指针放到移动后的那项上 // ListBox.Items[ListBox.SelectedIndex].Value=lt.Value; //9. 移动指针到指定位置: // (1).移至首条 // //将被选中项的索引设置为0就OK了 // ListBox.SelectIndex=0; // (2).移至尾条 // //将被选中项的索引设置为ListBox.Items.Count-1就OK了 // ListBox.SelectIndex=ListBox.Items.Count-1; // (3).上一条 // //用当前被选中的索引去减 1 // ListBox.SelectIndex=ListBox.SelectIndex - 1; // (4).下一条 // //用当前被选中的索引去加 1 // ListBox.SelectIndex=ListBox.SelectIndex + 1; //this.ListBox1.Items.Insertat(3,new ListItem("插入在第3行之后项","")); //this.ListBox1.Items.Insertat(index,ListItem) //ListBox1.Items.Insert(0,new ListItem("text","value"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值