分享

Listview控件的应用

 恩赐野兔 2010-12-29

C#中的ListView控件实例

ListView可以通过四种不同的方式显示条目。
1.只能给ListView控件添加基于ListViewItem类的对象;
2.ListViewItems属性:设置用于显示的属性;
3.SubItems()方法:包含详细视图中显示的文本;
4.View属性:设置以下四种显示方式:
Details:详细信息;
List:列表;
LargeIcon:大图标;
SmallIcon:小图标。
5.Details视图需要为Columns属性使用Add()方法添加列。

例一:




namespace ListViewExercise
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ListViewSet();
            CreateViewItemMethodOne();
            //CreateViewItemMethodTow();
        }

        /// <summary>
        /// ListView 设置
        /// </summary>
        private void ListViewSet()
        {
            //ListView显示方式
            listViewControl.View = View.Details;
        }      

        /// <summary>
        /// //手动填加ListView方法1
        /// </summary>
        private void CreateViewItemMethodOne()
        {
            listViewControl.BeginUpdate();
            #region 增加Item的标题,共有三个列
            //1、创建标题
            listViewControl.Columns.Add("文件名");
            listViewControl.Columns.Add("大小");
            listViewControl.Columns.Add("创建日期");
            #endregion

            #region 手动填加ListView方法

            //2、增加第一个Item,在View.Details模式下,有点像第一列中一个值
            listViewControl.Items.Add("folder1","文件夹1",0);
            //3、增加第一个Item的第一个SubItem,在View.Details模式下,有点像第一列中一个值
            listViewControl.Items["folder1"].SubItems.Add("11");
            //增加第一个Item的第二个SubItem,在View.Details模式下,有点像第一列中一个值
            listViewControl.Items["folder1"].SubItems.Add("20080114");

            listViewControl.Items.Add("folder2","文件夹2",0);
            listViewControl.Items["folder2"].SubItems.Add("21");
            listViewControl.Items["folder2"].SubItems.Add("20080115");

            listViewControl.Items.Add("文件夹3");
            listViewControl.Items.Add("文件夹4");

            #endregion

            listViewControl.EndUpdate();
        }

        /// <summary>
        /// 手动填加ListView方法2
        /// </summary>
        private void CreateViewItemMethodTow()
        {
            #region 增加Item的标题,共有三个列
            //1、创建标题,共三列
            listViewControl.Columns.Add("文件名");
            listViewControl.Columns.Add("大小");
            listViewControl.Columns.Add("创建日期");
            #endregion
            listViewControl.BeginUpdate();

            #region 增加第一个Item
            //2、定义一个ListViewItem,在View.Details模式下,有点像第一列中一个值
            ListViewItem lvItem;
            //3、定义ListViewSubItem,在View.Details模式下,有点像第二列中一个值
            ListViewItem.ListViewSubItem lvSubItem;

            //实列化一个Item,在View.Details模式下,有点像加第一行的第一个值
            lvItem = new ListViewItem();
            //Item的显示的文字
            lvItem.Text = "文件夹1";
            //4、Item增加到ListView控件中,即增加第一行。在View.Details模式下,有点像增加了第一个项目的第一列的第一个值
            listViewControl.Items.Add(lvItem);
            
            //实例化SubItem
            lvSubItem = new ListViewItem.ListViewSubItem();
            lvSubItem.Text = "10";
            //5、将SubItem增加到第一个Item中,在View.Details模式下,有点像增加了第一个项目的第二列的第一个值
            lvItem.SubItems.Add(lvSubItem);

            lvSubItem = new ListViewItem.ListViewSubItem();
            lvSubItem.Text = "20080114";
            //将SubItem增加到第一个Item中,在View.Details模式下,有点像增加了第一个项目的第三列的第一个值
            lvItem.SubItems.Add(lvSubItem);
            #endregion

            #region 增加第二个Item
            lvItem = new ListViewItem();
            lvItem.Text = "文件夹2";            
            lvSubItem = new ListViewItem.ListViewSubItem();
            lvSubItem.Text = "20";
            lvItem.SubItems.Add(lvSubItem);
            lvSubItem = new ListViewItem.ListViewSubItem();
            lvSubItem.Text = "20080115";
            lvItem.SubItems.Add(lvSubItem);
            listViewControl.Items.Add(lvItem);
            #endregion

            listViewControl.EndUpdate();
        }
    }
}

例二

例2:得到指定文件夹下的文件夹及文件名列表。如下图:

代码:
using System.IO;

namespace ListViewExercise
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ListViewSet();
            GetFolderTreeView(@"c:\");
        }

        /// <summary>
        /// ListView 设置
        /// </summary>
        private void ListViewSet()
        {
            //ListView显示方式
            listViewControl.View = View.Details;

     
            //项目的双击事件
            listViewControl.ItemActivate += new EventHandler(listViewControl_ItemActivate);
            //返回按钮的事件
            btnReturn.Click+=new EventHandler(btnReturn_Click);
        }

        /// <summary>
        /// 得到目录中的内容
        /// </summary>
        private void GetFolderTreeView(string asPath)
        {
            listViewControl.Clear();
            #region 增加Item的标题,共有三个列
            //创建标题,共三列
            listViewControl.Columns.Add("文件名");
            listViewControl.Columns.Add("大小");
            listViewControl.Columns.Add("创建日期");
            #endregion

            //开始更新
            listViewControl.BeginUpdate();

            DirectoryInfo diInfo = new DirectoryInfo(asPath);
            DirectoryInfo[] dirs = diInfo.GetDirectories();
            FileInfo[] fiInfo = diInfo.GetFiles();

            ListViewItem lviItem;
            ListViewItem.ListViewSubItem lviSubItem;

            foreach (DirectoryInfo di in dirs)
            {
                lviItem = new ListViewItem();
                lviItem.Text = di.Name;
                //得到文件夹的路径
                lviItem.Tag = di.FullName;

                lviSubItem = new ListViewItem.ListViewSubItem();                  
                //文件夹没有大小
                lviSubItem.Text = "";
                lviItem.SubItems.Add(lviSubItem);

                lviSubItem = new ListViewItem.ListViewSubItem();
                lviSubItem.Text = di.CreationTime.ToString();
                lviItem.SubItems.Add(lviSubItem);

                listViewControl.Items.Add(lviItem);
            }

            foreach (FileInfo fi in fiInfo)
            {
                lviItem = new ListViewItem();
                lviItem.Text = fi.Name;

                lviSubItem = new ListViewItem.ListViewSubItem();
                lviSubItem.Text = fi.Length.ToString();
                lviItem.SubItems.Add(lviSubItem);

                lviSubItem = new ListViewItem.ListViewSubItem();
                lviSubItem.Text = fi.CreationTime.ToString();
                lviItem.SubItems.Add(lviSubItem);

                listViewControl.Items.Add(lviItem);
            }
            //结束更新
            listViewControl.EndUpdate();
        }


        /// <summary>
        /// 定义变量存放路径
        /// </summary>
        string sfileName = "";

        /// <summary>
        /// 项目的双击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void listViewControl_ItemActivate(object sender, EventArgs e)
        {
            ListView lvControl = (ListView)sender;
            sfileName = lvControl.SelectedItems[0].Tag.ToString();
            if (lvControl.SelectedItems[0].Tag.ToString() == "")
            {
                try
                {
                    System.Diagnostics.Process.Start(sfileName);
                }
                catch
                {
                    return;
                }
            }
            else
            {

                GetFolderTreeView(sfileName);
            }
        }


        /// <summary>
        /// 返回上一级
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReturn_Click(object sender, EventArgs e)
        {
            /*
             原理:得到路径,然后截取最后一个"\"之前的路径,并将其路径赋给你路径变量。
             再次单击返回时,截取此变量中最后一个"\"之前的路径。
             当获得不到"\"的位置时说明到达顶层。
             */
            int iPosition = sfileName.LastIndexOf("\\") + 1;
            if (iPosition > 0)
            {
                string sA = sfileName.Substring(0, iPosition);
                GetFolderTreeView(sA);
                sfileName = sfileName.Substring(0, iPosition - 1); ;
            }
        }

    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多