TreeView 使用方法:(在View.Details模式下)

1、建立TreeView的標題
         2、建立TreeView的Item
         3、在TreeView的Item中的建立SubItem
         
         如果將各部分拆分開來的方法為:
         1、建立TreeView的標題
         2、建立Item
         3、建立SubItem
         4、將SubItem加入到Item中
         5、將Item加入到TreeView中
         
         注:
         在View.Details模式下,Item相當於建立主列中的資料;SubItem相當於建立其它列中的資料。
         其它模式可以不用建立SubItem。

下邊用例子來學習。如實現下圖功能。

代碼:

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); ;
            }
        }

}
}

时间: 2024-10-14 23:15:12

TreeView 使用方法:(在View.Details模式下)的相关文章

win7系统的虚拟机的NAT网络模式下的共享文件方式

本方法为NAT网络模式下的虚拟机与主机共享文件夹设置方式 首先设置虚拟机里的需要共享的文件夹 将文件共享选项的用户中设置为Everyone,选定后点击添加按钮,再点击共享按钮,最后点击弹出的窗口的确定按钮. 这里默认用户已经是NAT网络模式,所以不再赘述设置NAT网络模式. 在虚拟机中打开cmd命令窗口输入ipconfig命令查询虚拟机ip地址 在主机计算机界面右键添加一个网络位置 选择自定义网络位置 输入\\"刚才查询到的ip地址"\"共享文件夹名" 如:\\19

检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 为什么会出现以上错误? 在IIS7的应用程序池有两种模式,一种是“集成模式”,一种是“经典模式”. 经典模式 则是我们以前习惯的IIS 6 的方式. 如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需要将他们转移到<modules

WCF IIS 服务器 500 错误 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 为什么会出现以上错误? 在IIS7的应用程序池有两种模式,一种是"集成模式",一种是"经典模式". 经典模式 则是我们以前习惯的IIS 6 的方式. 如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需

RedHat Linux文本模式下乱码解决方法

如果在安装RedHat Linux时选择中文未缺省语言,在文本模式下会出现乱码情况,对于在CLI(command-line interface,命令行界面)方式下调试程序时诸多不便,因为出错信息全是乱码,下面说明乱码问题如何解决: 方法1: 1.locale命令查看当前系统使用的语言 可以看到当前系统使用中文语言 2.export LC_ALL=POSIX修改LC_ALL语言选项 3.locale命令再次查看 可以看到语言设置已修改,但该方法在用户注销或重启后会失效,若要保存设置请看方法2 方法

js架构设计模式——MVVM模式下,ViewModel和View,Model有什么区别

MVVM模式下,ViewModel和View,Model有什么区别 Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model. View:也很简单,就是展现出来的用户界面. 基本上,绝大多数软件所做的工作无非就是从数据存储中读出数据,展现到用户界面上,然后从用户界面接收输入,写入到数据存储里面去.所以,对于数据 存储(model)和界面(view)这两层,大家基本没什么异议.但是,如何把model展现到view上,以及如何把数据从view写入到m

GTID模式下的replication,跳过错误日志的解决方法

日志错误: 大多数replication错误都是因为日志错误引起的. 主日志和中继日志都可能出错. 评判日志错误的辨别方法: mysqlbinlog  master_binlog_file > /dev/null   屏幕有输出则表示这个binlog有错误,如果没有则表示binlog正常. mysqlbinlog  slave_binlog_file  >/dev/null 跳过日志错误1: 可以使用手动跳过日志错误,可能会造成数据不一致 如果主日志出错,可以再slave上执行(如果有多个错误

(转)检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 为什么会出现以上错误? 在IIS7的应用程序池有两种模式,一种是“集成模式”,一种是“经典模式”. 经典模式 则是我们以前习惯的IIS 6 的方式. 如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需要将他们转移到<modules

电脑在IDE模式下能正常启动,改成AHCI后蓝屏——解决方法

本人安装的是32位的WIN7操作系统,SATA串口在IDE模式下能正常运行,,但是在BIOS 中把IDE模式改为AHCI模式时,发现启动不了电脑,出现蓝屏,显示SOPT:0X0000007B....  后来在网上查了一下解决方案. 网上有各种解决方案,下面列出几种我觉得比较可行的吧: 方法一: 1.先把BIOS的高级SATA选项的AHCI模式设为IDE,并设U盘启动, 2.重启电脑进入PE系统,这里在PE系统中可查到硬盘,点击:自动安装系统到C盘,开始复制文件,当复制结束时,提示几秒电脑重新启动

NAT模式下VMware中CentOS7无法连接外网的解决方法

由于需要有配置了一台虚拟机,发现按照之前的方法又出现问题了,需要配置DNS解析才能够识别外部的IP域名. # 查看是否有DNS配置 cat /etc/resolv.conf # 添加DNS配置 vim /etc/resolv.conf # 填入DNS服务器 nameserver 8.8.8.8 nameserver 8.8.4.4 之前安装CentOS7需要使用国内的yum源安装一些应用,但是在使用NAT模式下,发现无法连接外网: ping www.baidu.com 百度ping不通,但是主机