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。
下邊用例子來學習。如實現下圖功能。
代碼:
{
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:
得到指定文件夾下的文件夾及文件名列表。如下圖:

代碼:
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); ;
}
}
}
}
TreeView 使用方法:(在View.Details模式下)的更多相关文章
- 基于dalvik模式下的Xposed Hook开发的某加固脱壳工具
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77966109 这段时间好好的学习了一下Android加固相关的知识和流程也大致把A ...
- 如何在grails2.3.x中的fork模式下进行调试?-【grails】
grails2.3.x中默认情况下运行模式被设置成了fork模式,在这种模式下,大家会发现设置了断点后无法进行中断.这是由于fork模式造成的,因为在fork模式下,JVM新起了一个进程,这样调试器就 ...
- php cli模式下获取参数的方法
转载声明:http://blog.csdn.net/fdipzone/article/details/51945892 php在cli模式下接收参数有两种方法 1.使用argv数组 <?php ...
- 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
× 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)
我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.N ...
- (转)检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)
我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.N ...
- js架构设计模式——MVVM模式下,ViewModel和View,Model有什么区别
MVVM模式下,ViewModel和View,Model有什么区别 Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model. View:也很简单,就 ...
- mysql主从模式下在主库上的某些操作不记录日志的方法
mysql主从模式下在主库上的某些操作不记录日志的方法 需求场景: 在主库上的需要删除某个用户,而这个用户在从库上不存在(我在接手一个业务的时候,就遇到主从架构用户授权不一致的情况,主库比较全,而从库 ...
- php在cli模式下取得命令行中的参数的方法-getopt命令行可传递数组-简单自定义方法取命令行参数
在cli模式下执行PHP时,自动给脚本文件传递了一个变量$argv,其值即是一个命令中所有值组成的数组(以空格区分),在PHP程序中接收参数有3种方法1.直接使用argv变量数组. 2.使用$_SER ...
随机推荐
- Vim配置文件
转载 原文网址:http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html 花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim ...
- SQUID常用命令
Squid日常维护过程中,常用的一些命令: 1,初始化你在 squid.conf 里配置的 cache 目录squid -z如果有错误提示,请检查你的 cache目录的权限.可以使用使用更改目录权限: ...
- HTML文档可以包含的内容
通过不同的标签,HTML文档可以包含不同的内容,比如文本,链接,图片,列表,表格,表单,框架等. 文本 HTML对文本的支持是最丰富的,你可以设置不同级别的标题,分段和换行,可以指定文本的语义和外观, ...
- phpcms 整合 discuz!
第一步,进入discuz后台,点击UCenter菜单,然后点击应用管理,接着点击右侧的添加新应用按钮 然后填写应用相关信息: 1.应用类型选择“其他” 2.应该名称填写“phpcms” //此处可以自 ...
- DTMF三种模式(SIPINFO,RFC2833,INBAND)
转自:http://www.tuicool.com/articles/n6Vb2iJ 1.DTMF(双音多频)定义:由高频音和低频音的两个正弦波合成表示数字按键(0~9 * # A B C D). 2 ...
- MD5验证
commons-codec包可以从apache下载:http://commons.apache.org/codec/download_codec.cgi MD5现在是用来作为一种数字签名算法,即A向B ...
- 子代选择器(>)后代选择器(' ')的区别
子代选择器是指紧接着父级的那个标签,如:container>a指的是紧接着container后面的第一个a(儿子级别的,孙子或者之后的a是不能生效的) 后代选择器是用空格分开的,如:contai ...
- 【生活没有希望】hdu1166敌兵布阵 线段树
线段树水题刷刷,生活没有希望 最近看到代码跟树状数组差不多短的非递归线段树,常数也很小——zkw线段树 于是拿道水题练练手 短到让人身无可恋 ;pos;pos/=) a[pos]+=x;} ,ans= ...
- Bootstrap 简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。
Bootstrap 简洁.直观.强悍的前端开发框架,让web开发更迅速.简单.
- UNP环境配置
最近在学习<UNIX网络编程>,书上将常用的头文件都放在unp.h里,需要自己编译一下代码搭建环境. UNP环境配置过程 下载源码 http://www.unpbook.com/src.h ...