屌丝学编程,winform视频学习笔记

ListView控件的常用属性: image.png ListView控件的常用方法: image.png ListView控件的常用事件image.png ListView控件具有5种显示视图,由View属性设置,View属性的值及说明见下表: image.png (1)详细视图(Details) image.png (2)大图标(LargeIcon) image.png (3)小图标(SmallIcon) image.png (4)列表(List) image.png (5)平铺(Tile) image.png ListView的结构: (1)ListView控件可以展示多项数据,Items属性表示所有项的集合。

(2)其中每一项均为ListViewItem对象。

(3)每个ListViewItem对象中包含SubItems属性表示该项中所有子项的集合。

(4)其中每个子项均为ListViewSubItem对象。

一、给ListView添加删除项目

示例:使用ListView控件展示游戏人物的信息。

==采用两种方法分别实现此功能:==

(1)使用ListView编辑器添加,删除项。

(2)使用代码为ListView添加,删除项。

使用ListViewItem集合编辑器添加,删除项:

实现步骤:

(1)创建窗体,并向其中拖入ListView控件

(2)设置ListView控件的Dock属性在父容器中停靠。

(3)向ListView控件中添加,删除列(点击右上角三角,编辑列)。 image.png

(4)设置ListView控件的显示视图为Detail,此时可以看到列标题

(5)向ListView控件中添加,删除项(点击右上角三角,编辑项)

(6)添加ListViewItem项目,在text属性中设置第一列内容,在SubItems里面设置后续列内容。 image.png image.png

注意:如果该项数据有图片

(1)需要拖入两个ImageList控件,分别存储大图标和小图标的图片。

(2)点击ListView控件右上角三角,将ListView控件与两个ImageList控件关联。

(3)然后直接在该项ListViewItem上设置ImageIndex属性设置图片的索引。

==特别注意:如果ListView与ImageList关联,ListView的Detail视图中的行高会随着小图标视图的ImageList的图像高度而改变。而且取消与ImageList的关联后也无法还原,此时可以通过设置ImageList的图像大小来控制行高。==

使用代码为ListViewItem添加项:

实现步骤:

(1)创建窗体,并向其中拖入ListView控件

(2)设置ListView控件的Dock属性在父容器中停靠,name属性为lvTimi。

(3)向ListView控件中添加列(点击右上角三角,编辑列)。

(4)设置ListView控件的显示视图为Detail,此时可以看到列标题。

(5)在窗体加载时,编写代码为ListView添加项。

 private void Form3_Load(object sender, EventArgs e)
        {
            ListViewItem item1 = new ListViewItem("云中君");
            item1.ImageIndex = 0;
            item1.SubItems.Add("中等");
            item1.SubItems.Add("较强");
            item1.SubItems.Add("较强");
            item1.SubItems.Add("较难");
            this.listView1.Items.Add(item1);
            ListViewItem item2 = new ListViewItem("猪八戒");
            item2.ImageIndex = 1;
            item2.SubItems.Add("超强");
            item2.SubItems.Add("较强");
            item2.SubItems.Add("较强");
            item2.SubItems.Add("中等");
            this.listView1.Items.Add(item2);
        }

image.png 使用代码为ListViewItem删除项:

//直接使用ListViewItem对象名删除
            this.listView1.Items.Remove(item2);
 //通过索引下标删除
            this.listView1.Items.RemoveAt(1);
//通过键来删除,这里的键就是 ListViewItem的Name
            this.listView1.Items.RemoveByKey("zbj");

二、响应事件,获取选中项目内容。

设置FullRowSelect属性为true,保证单击某项整行选中效果,选择ListView控件的DoubleClick(双击)事件,编写如下代码:

private void listView1_DoubleClick(object sender, EventArgs e)
        {
            ListViewItem item = this.listView1.SelectedItems[0];//当前选中行
            if (item==null)
            {
                return;
            }
            string str = "";
            str += "名字:" + item.Text + "\n";
            str += "生存能力:" + item.SubItems[1].Text + "\n";
            str += "攻伤害:" + item.SubItems[2].Text + "\n";
            str += "技能效果:" + item.SubItems[3].Text + "\n";
            str += "上手难度:" + item.SubItems[4].Text + "\n";
            MessageBox.Show(str);
        }

image.png

三、结合右键实现删除以及视图切换

拖入ConTextMenuStrip控件,制作如下菜单,并设置ListView控件的ContextMenuStrip属性用来关联ListView控件和ContextMenuStrip控件:

image.png image.png 删除菜单响应代码:

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.listView1.SelectedItems.Count==0)
            {
                MessageBox.Show("您没有选择项目。");
                return;
            }
            ListViewItem item = this.listView1.SelectedItems[0];          
            this.listView1.Items.Remove(item);
        }

各种视图菜单响应代码:

 private void 大图标ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.listView1.View = View.LargeIcon;
        }

        private void 小图标ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.listView1.View = View.SmallIcon;
        }

        private void 详细ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.listView1.View = View.Details;
        }

        private void 列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.listView1.View = View.List;
        }

        private void 平铺ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.listView1.View = View.Tile;