详解C# winform ListView的基本操作

组图的加载与导入

图片存放的相对路径/ 与exe存放在一个文件夹

为界面添加图片组–组件

图片下载路径
链接:img_jb51.rar

 // 组图的加载与导入
 Dictionary<int, string> dic = new Dictionary<int, string>(); // 保存 序号--文件路径
 private void LoadImgList()
 {
     string imgPath = @".\img"; // 文件夹路径

     if (Directory.Exists(imgPath)==false)
     {
         Debug.WriteLine("图片文件夹不存在");
         return;
     }

     // 获取图片路径列表
     string[] files = Directory.GetFiles(imgPath);
     if (files.Length <= 0)
     {
         Debug.WriteLine("图片不存在");
         return;
     }

     this.largeList.Images.Clear();
     this.smallList.Images.Clear();
     int index = 0;

     // 判断文件后缀,读取图片,设置图片
     string[] fileType = { ".jpg", ".png" };
     foreach (string fpath in files)
     {
         // 判断文件后缀
         if (fileType.Contains(Path.GetExtension(fpath)))
         {
             Image img = Image.FromFile(fpath);
             string keyName = Path.GetFileNameWithoutExtension(fpath);
             // 设置图片
             this.largeList.Images.Add(keyName, img);
             this.smallList.Images.Add(keyName, img);
             // 保存索引与图片路径
             dic.Add(index, fpath);
             index++;
         }
     }

     // 设置图片大小
     this.largeList.ImageSize = new Size(50, 50);
     this.smallList.ImageSize = new Size(20, 20);
 }

为ListView添加内容

 private void SetDetailsData()
 {
     // 清空列表
     lvList.Columns.Clear();
     lvList.Items.Clear();

     // 设置模式
     lvList.View = View.Details; // 设置详细视图

     // 列的添加
     lvList.Columns.Add("文件名", 100, HorizontalAlignment.Left);
     lvList.Columns.Add("创建日期", 150, HorizontalAlignment.Left);
     lvList.Columns.Add("类型", 80, HorizontalAlignment.Left);
     lvList.Columns.Add("大小", 60, HorizontalAlignment.Left);

     // item 的添加
     for (int i = 0; i < dic.Count; i++)
     {
         ListViewItem li = new ListViewItem();
         li.ImageIndex = i; //设置图片序号
         // 设置文件名
         li.Text = smallList.Images.Keys[i];

         li.SubItems.Add(File.GetCreationTime(dic[i]).ToString()); // 创建时间
         li.SubItems.Add(Path.GetExtension(dic[i]).ToString()); // 类型

         long length = new FileInfo(dic[i]).Length; // 大小
         li.SubItems.Add((length / 1024).ToString());
         lvList.Items.Add(li);
     }
 }

ListView 初始化设置与加载

 private void Form1_Load(object sender, EventArgs e)
 {
     // 显示是否分组显示
     this.lvList.ShowGroups = false;

     if (this.largeList == null || this.largeList.Images.Count <= 0)
     {
         return;
     }

     this.SetDetailsData(); // 设置数据
     this.SetListGroup(); // 设置列表分组
     this.SetItemGroup(); // 设置item所属组

     lvList.GridLines = true;

     lvList.View = View.LargeIcon; // 设置显示模式--为大图模式
     lvList.LargeImageList = this.largeList;//关联大图标列表
     lvList.SmallImageList = this.smallList;// 关联小图标列表
 }

分组设置

// 为列表设置分组设置,
Dictionary<string, string> dict = new Dictionary<string, string>(); // 记录分组名与包含字符串
private void SetListGroup()
{
    // 添加组
    lvList.Groups.Clear();
    lvList.Groups.Add(new ListViewGroup("花", HorizontalAlignment.Center));
    lvList.Groups.Add(new ListViewGroup("动物", HorizontalAlignment.Center));
    lvList.Groups.Add(new ListViewGroup("人物", HorizontalAlignment.Center));
    lvList.Groups.Add(new ListViewGroup("风景", HorizontalAlignment.Center));

    dict.Add("花", "04");
    dict.Add("动物", "01");
    dict.Add("人物", "02");
    dict.Add("风景", "03");
}

// 设置item 所属分组
private void SetItemGroup()
{
    // 判断每一项进行分组
    for (int i = 0; i < lvList.Items.Count; i++)
    {
        foreach (ListViewGroup lvg in lvList.Groups)
        {
            if (lvList.Items[i].Text.Substring(0, 2) == dict[lvg.Header])
            {
                lvList.Items[i].Group = lvg;
                break;
            }
        }
    }
}

完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace ListViewSt
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.LoadImgList();
        }

        // 组图的加载与导入
        Dictionary<int, string> dic = new Dictionary<int, string>(); // 保存 序号--文件路径
        private void LoadImgList()
        {
            string imgPath = @".\img"; // 文件夹路径

            if (Directory.Exists(imgPath) == false)
            {
                Debug.WriteLine("图片文件夹不存在");
                return;
            }

            // 获取图片路径列表
            string[] files = Directory.GetFiles(imgPath);
            if (files.Length <= 0)
            {
                Debug.WriteLine("图片不存在");
                return;
            }

            this.largeList.Images.Clear();
            this.smallList.Images.Clear();
            int index = 0;

            // 判断文件后缀,读取图片,设置图片
            string[] fileType = { ".jpg", ".png" };
            foreach (string fpath in files)
            {
                // 判断文件后缀
                if (fileType.Contains(Path.GetExtension(fpath)))
                {
                    Image img = Image.FromFile(fpath);
                    string keyName = Path.GetFileNameWithoutExtension(fpath);
                    // 设置图片
                    this.largeList.Images.Add(keyName, img);
                    this.smallList.Images.Add(keyName, img);
                    // 保存索引与图片路径
                    dic.Add(index, fpath);
                    index++;
                }
            }

            // 设置图片大小
            this.largeList.ImageSize = new Size(50, 50);
            this.smallList.ImageSize = new Size(20, 20);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 显示是否分组显示
            this.lvList.ShowGroups = false;

            if (this.largeList == null || this.largeList.Images.Count <= 0)
            {
                return;
            }

            this.SetDetailsData(); // 设置数据
            this.SetListGroup(); // 设置列表分组
            this.SetItemGroup(); // 设置item所属组

            lvList.GridLines = true;

            lvList.View = View.LargeIcon; // 设置显示模式--为大图模式
            lvList.LargeImageList = this.largeList;//关联大图标列表
            lvList.SmallImageList = this.smallList;// 关联小图标列表
        }

        // 大图标视图
        private void btnLarge_Click(object sender, EventArgs e)
        {
            this.lvList.View = View.LargeIcon;
        }

        // 小图标视图
        private void btnSmall_Click(object sender, EventArgs e)
        {
            this.lvList.View = View.SmallIcon;
        }

        // 列表视图
        private void btnList_Click(object sender, EventArgs e)
        {
            this.lvList.View = View.List;
        }

        // Tile 视图 图标使用大图标
        private void btnTile_Click(object sender, EventArgs e)
        {
            this.lvList.View = View.Tile;
        }

        // 详细信息视图 列
        private void btnDetail_Click(object sender, EventArgs e)
        {
            lvList.View = View.Details; // 设置详细视图
        }

        // 添加item列表
        private void SetDetailsData()
        {
            // 清空列表
            lvList.Columns.Clear();
            lvList.Items.Clear();

            // 设置模式
            lvList.View = View.Details; // 设置详细视图

            // 列的添加
            lvList.Columns.Add("文件名", 100, HorizontalAlignment.Left);
            lvList.Columns.Add("创建日期", 150, HorizontalAlignment.Left);
            lvList.Columns.Add("类型", 80, HorizontalAlignment.Left);
            lvList.Columns.Add("大小", 60, HorizontalAlignment.Left);

            // item 的添加
            for (int i = 0; i < dic.Count; i++)
            {
                ListViewItem li = new ListViewItem();
                li.ImageIndex = i; //设置图片序号
                // 设置文件名
                li.Text = smallList.Images.Keys[i];

                li.SubItems.Add(File.GetCreationTime(dic[i]).ToString()); // 创建时间
                li.SubItems.Add(Path.GetExtension(dic[i]).ToString()); // 类型

                long length = new FileInfo(dic[i]).Length; // 大小
                li.SubItems.Add((length / 1024).ToString());
                lvList.Items.Add(li);
            }
        }

        // 为列表设置分组设置,
        Dictionary<string, string> dict = new Dictionary<string, string>(); // 记录分组名与包含字符串
        private void SetListGroup()
        {
            // 添加组
            lvList.Groups.Clear();
            lvList.Groups.Add(new ListViewGroup("花", HorizontalAlignment.Center));
            lvList.Groups.Add(new ListViewGroup("动物", HorizontalAlignment.Center));
            lvList.Groups.Add(new ListViewGroup("人物", HorizontalAlignment.Center));
            lvList.Groups.Add(new ListViewGroup("风景", HorizontalAlignment.Center));

            dict.Add("花", "04");
            dict.Add("动物", "01");
            dict.Add("人物", "02");
            dict.Add("风景", "03");
        }

        // 设置item 所属分组
        private void SetItemGroup()
        {
            // 判断每一项进行分组
            for (int i = 0; i < lvList.Items.Count; i++)
            {
                foreach (ListViewGroup lvg in lvList.Groups)
                {
                    if (lvList.Items[i].Text.Substring(0, 2) == dict[lvg.Header])
                    {
                        lvList.Items[i].Group = lvg;
                        break;
                    }
                }
            }
        }

        // 以分组形式显示
        private void btnGroupShow_Click(object sender, EventArgs e)
        {
            lvList.ShowGroups = true;

            this.SetDetailsData();
            this.SetItemGroup();

        }

    }
}

大图标模式显示

Tile模式 显示

分组显示

到此这篇关于详解C# winform ListView的基本操作的文章就介绍到这了,更多相关C# winform ListView内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# Winform 禁止用户调整ListView的列宽

    复制代码 代码如下: // 事件: 改变列宽的时候 private void ColumnWidthChange(object sender, ColumnWidthChangingEventArgs e) { // 如果调整的不是第一列,就不管了 if (e.ColumnIndex > 0) return; // 取消掉正在调整的事件 e.Cancel = true; // 把新宽度恢复到之前的宽度 e.NewWidth = this.lvStudents.Columns[e.ColumnIn

  • c# winform treelistview的使用(treegridview)实例详解

    TreeView控件显示的内容比较单一,如果需要呈现更详细信息TreeListView是一个不错的选择. 先看效果: 首先需要引用文件System.Windows.Forms.TreeListView.dll.System.Runtime.InteropServices.APIs.dll 你可以将TreeListView加入到工具箱中然后在添加到窗体中. 1.你需要添加列 2.你需要添加一个ImageList作为节点图标的容器(你还需要配置TreeListView的SmallImageList属

  • 详解C# winform ListView的基本操作

    组图的加载与导入 图片存放的相对路径/ 与exe存放在一个文件夹 为界面添加图片组–组件 图片下载路径链接:img_jb51.rar // 组图的加载与导入 Dictionary<int, string> dic = new Dictionary<int, string>(); // 保存 序号--文件路径 private void LoadImgList() { string imgPath = @".\img"; // 文件夹路径 if (Directory

  • Android RecyclerView详解之实现 ListView GridView瀑布流效果

     什么是RecyclerView RecyclerView 是Google推出的最新的 替代ListView.GridView的组件,RecyclerView是用来显示大量数据的容器,并通过有限数量的子View,来提高滚动时的性能. 与ListView不同,RecyclerView 不再负责布局,而是专注于布局复用.布局主要通过 LayoutManager来管理,目前提供了3种常用的布局管理: LinearLayoutManager 线性布局管理器 (ListView效果) GridLayout

  • RecyclerView使用详解(代替ListView)

    老规矩,先看效果: Recycler是android5.0版本中新添加的一个view; 使用之前必须添加依赖库: dependencies { compile 'com.android.support:recyclerview-v7:23.0.+' } 这里我就不再过多的介绍RecyclerView,既然大家在找使用RecyclerView的demo想必大家都了解过了,如果不了解网上随便打开一篇RecyclerView的文章应该都有,已经烂大街,在此就不过多的重复了: 今天写的demo主要是利用

  • 详解Visual Studio 2019(VS2019) 基本操作

    卸载/加载项目 1.卸载项目:不删除项目代码,但是停止对该项目的一切使用和调用(好处是保留代码) 2.加载项目:重新加载已停用的项目,可以继续使用和调用 修改VS主题风格 工具–>选项–>环境–>常规 修改字体 工具–>选项–>环境–>字体和颜色 设置程序启动项 右键解决方案–>选择属性(VS默认是单启动项) 快速创建属性 光标要在[字段]附近 快捷键:[Ctrl+r+e](按住Crtl,先按r,再按e) 直接回车就可以 VS常用快捷键 代码对齐:Ctrl+k+d

  • 一文详解Java中字符串的基本操作

    目录 一.遍历字符串案例 二.统计字符次数案例 三.字符串拼接案例 四.字符串反转案例 五.帮助文档查看String常用方法 一.遍历字符串案例 需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串 思路: 1.键盘录入一个字符串,用 Scanner 实现 2.遍历字符串,首先要能够获取到字符串中的每一个字符 public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始的 3.遍历字符串,其次要能够获取到字符串的长度 public int

  • 详解C# WinForm如何实现自动更新程序

    目录 前言 开发环境 开发工具 实现代码 实现效果 前言 在C/S这种模式中,自动更新程序就显得尤为重要,它不像B/S模式,直接发布到服务器上,浏览器点个刷新就可以了.由于涉及到客户端文件,所以必然需要把相应的文件下载下来.这个其实比较常见,我们常用的微信.QQ等,也都是这个操作. 自动更新程序也分为客户端和服务端两部分,客户端就是用来下载的一个小程序,服务端就是供客户端调用下载接口等操作. 这里第一步先将服务端代码写出来,逻辑比较简单,使用xml文件分别存储各个文件的名称以及版本号(每次需要更

  • 详解Java中IO字节流基本操作(复制文件)并测试性能

    此次案例将以复制文件的形式来演示IO字节流的基本操作,复制一个mp3文件,文件信息如下图: main方法测试 public static void main(String[] args) throws Exception { //源文件 String srcFile = "src/a.mp3"; //目的文件 String destFile = "src/b.mp3"; long start = System.currentTimeMillis(); ... 复制文

  • 详解Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)

    昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用ListView实现其中联系人一栏的基本视图,效果如下: 要实现上图的效果,我们要用到两个知识点: 1.这里我们使用自定义适配实现图文列表(当然也可以用SimpleAdapter) 通过继承BaseAdapter(抽象类)自定义适配器可以实现更灵活更复杂的列表. 自定义适配器ListView的优化: (1)使用固

  • C#中WPF ListView绑定数据的实例详解

    C#中WPF ListView绑定数据的实例详解 WPF中ListView用来显示数据十分方便, 我们可以将它分成几个列,每一个列用来显示一条数据,但是又是在一方之中. 那么怎样实现这样的效果的呢,这就要用绑定了. 我们先来看一看他的xmal代码 <ListView Name="receiveList" Grid.Row="0"> <ListView.View> <GridView> <GridView.Columns>

  • Android开发实现ListView异步加载数据的方法详解

    本文实例讲述了Android开发实现ListView异步加载数据的方法.分享给大家供大家参考,具体如下: 1.主Activity public class MainActivity extends Activity { private ListView listView; private ArrayList<Person> persons; private ListAdapter adapter; private Handler handler=null; //xml文件的网络地址 final

随机推荐