C# ListView
2013-10-25 14:44
267 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO; // 允许读写文件和数据流的类型以及提供基本文件和目录支持的类型;
namespace ListView
{
public partial class Form1 : Form
{
//定义一个字段(字符串集合)来存放前面浏览的文件夹
private System.Collections.Specialized.StringCollection folderCol;
public Form1()
{
InitializeComponent();
this.lwFileAndFolders.ItemActivate += new System.EventHandler(this.lwFileAndFolders_ItemActivate);
folderCol = new System.Collections.Specialized.StringCollection();
CreateHeaderAndFillListView();
PaintListView(@"D:\");
folderCol.Add(@"D:\");
}
private void lwFileAndFolders_ItemActivate(object sender, System.EventArgs e)
{
System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
string fileName = lwFileAndFolders.SelectedItems[0].Tag.ToString();
if (lw.SelectedItems[0].ImageIndex != 0)
{
try
{
System.Diagnostics.Process.Start(fileName);
}
catch
{
return;
}
}
else
{
PaintListView(fileName);
folderCol.Add(fileName);
}
}
// 创建列标题;
private void CreateHeaderAndFillListView()
{
ColumnHeader colHead;
// 第一个标题;
colHead = new ColumnHeader();
colHead.Text = "FileName";
this.lwFileAndFolders.Columns.Add(colHead); // 将标题插入到listView中
// 第二个标题;
colHead = new ColumnHeader();
colHead.Text = "Size";
this.lwFileAndFolders.Columns.Add(colHead);
// 第三个标题
colHead = new ColumnHeader();
colHead.Text = "Last accessed";
this.lwFileAndFolders.Columns.Add(colHead);
}
// 用硬盘山的文件盒文件夹填充列表;
private void PaintListView(string root)
{
try
{
// 用来存储列表对象, 然后将其插入到视图列表框中;
ListViewItem lvi;
ListViewItem.ListViewSubItem lvsi;
if (root.CompareTo("") == 0)
return;
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(root); // 获取要显示的文件的目录信息;
DirectoryInfo[] dirs = dir.GetDirectories();// Folders; 返回当前目录的所以子目录;
FileInfo[] files = dir.GetFiles(); // Files; 返回当前目录下的所有文件,为每个文件返回一个FileInfor对象;
this.lwFileAndFolders.Items.Clear();// 清空ListView里面的所有内容,包括列标题;
this.label1.Text = root; // 标签显示当前的目录;
this.lwFileAndFolders.BeginUpdate(); // 告诉ListView停止更新其可见域;
// 添加所有文件夹,并插入到ListView中;
foreach (System.IO.DirectoryInfo di in dirs)
{
lvi = new ListViewItem();
lvi.Name = di.Name;
lvi.ImageIndex = 0; // 获取和设置当树节点处于未选定状态时所显示图像的图像列表索引值;。从0开始索引,表示图像在所分配的ImageList中的位置;
lvi.Tag = di.FullName;
lvsi = new ListViewItem.ListViewSubItem();//创建ListView的子目录
lvsi.Text = "";
lvi.SubItems.Add(lvsi); // 将子目录添加到lvi中;
lvsi = new ListViewItem.ListViewSubItem();
lvsi.Text = di.LastAccessTime.ToString();
lvi.SubItems.Add(lvsi);
this.lwFileAndFolders.Items.Add(lvi);
}
foreach (System.IO.FileInfo fi in files)
{
lvi = new ListViewItem();
lvi.Text = fi.Name;
lvi.ImageIndex = 1;
lvi.Tag = fi.FullName;
lvsi = new ListViewItem.ListViewSubItem();
lvsi.Text = fi.Length.ToString();
lvi.SubItems.Add(lvsi);
this.lwFileAndFolders.Items.Add(lvi);
}
this.lwFileAndFolders.EndUpdate();
}
catch (System.Exception err)
{
MessageBox.Show("Error:"+err.Message);
}
}
private void btnBack_Click(object sender, EventArgs e)
{
if (folderCol.Count > 1)
{
PaintListView(folderCol[folderCol.Count - 2].ToString());
folderCol.RemoveAt(folderCol.Count - 1);
}
else
{
PaintListView(folderCol[0].ToString());
}
}
private void rdoLargeIcon_CheckedChanged(object sender, EventArgs e)
{
/* 因为事件使用它们的方法传递事件的时候,sender都指向了引起这个事件的控件的对象(对象的类型很多),
* 但是无论哪个控件调用了方法,其结果是一样的。这里我们制定了这个对象为RadioButton,因为此时此刻我们
* 是由这个单选按钮(RadioButton)引发的事件处理,我们这样转化后,就可以调用RadioButton里面的一些属性和方法
* 来帮助我们做出更加方面的判断,因为object是最顶层的基类,不一定具有RadioButton所有的属性和方法,但是RadioButton
* 继承object,则object所有的非private属性和方法我们这里都
4000
可以使用;
*/
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.LargeIcon;
}
private void rdoSmallIcon_CheckedChanged(object sender, EventArgs e)
{
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.SmallIcon;
}
private void rdoList_CheckedChanged(object sender, EventArgs e)
{
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.List;
}
private void rdoDetails_CheckedChanged(object sender, EventArgs e)
{
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.Details;
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO; // 允许读写文件和数据流的类型以及提供基本文件和目录支持的类型;
namespace ListView
{
public partial class Form1 : Form
{
//定义一个字段(字符串集合)来存放前面浏览的文件夹
private System.Collections.Specialized.StringCollection folderCol;
public Form1()
{
InitializeComponent();
this.lwFileAndFolders.ItemActivate += new System.EventHandler(this.lwFileAndFolders_ItemActivate);
folderCol = new System.Collections.Specialized.StringCollection();
CreateHeaderAndFillListView();
PaintListView(@"D:\");
folderCol.Add(@"D:\");
}
private void lwFileAndFolders_ItemActivate(object sender, System.EventArgs e)
{
System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
string fileName = lwFileAndFolders.SelectedItems[0].Tag.ToString();
if (lw.SelectedItems[0].ImageIndex != 0)
{
try
{
System.Diagnostics.Process.Start(fileName);
}
catch
{
return;
}
}
else
{
PaintListView(fileName);
folderCol.Add(fileName);
}
}
// 创建列标题;
private void CreateHeaderAndFillListView()
{
ColumnHeader colHead;
// 第一个标题;
colHead = new ColumnHeader();
colHead.Text = "FileName";
this.lwFileAndFolders.Columns.Add(colHead); // 将标题插入到listView中
// 第二个标题;
colHead = new ColumnHeader();
colHead.Text = "Size";
this.lwFileAndFolders.Columns.Add(colHead);
// 第三个标题
colHead = new ColumnHeader();
colHead.Text = "Last accessed";
this.lwFileAndFolders.Columns.Add(colHead);
}
// 用硬盘山的文件盒文件夹填充列表;
private void PaintListView(string root)
{
try
{
// 用来存储列表对象, 然后将其插入到视图列表框中;
ListViewItem lvi;
ListViewItem.ListViewSubItem lvsi;
if (root.CompareTo("") == 0)
return;
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(root); // 获取要显示的文件的目录信息;
DirectoryInfo[] dirs = dir.GetDirectories();// Folders; 返回当前目录的所以子目录;
FileInfo[] files = dir.GetFiles(); // Files; 返回当前目录下的所有文件,为每个文件返回一个FileInfor对象;
this.lwFileAndFolders.Items.Clear();// 清空ListView里面的所有内容,包括列标题;
this.label1.Text = root; // 标签显示当前的目录;
this.lwFileAndFolders.BeginUpdate(); // 告诉ListView停止更新其可见域;
// 添加所有文件夹,并插入到ListView中;
foreach (System.IO.DirectoryInfo di in dirs)
{
lvi = new ListViewItem();
lvi.Name = di.Name;
lvi.ImageIndex = 0; // 获取和设置当树节点处于未选定状态时所显示图像的图像列表索引值;。从0开始索引,表示图像在所分配的ImageList中的位置;
lvi.Tag = di.FullName;
lvsi = new ListViewItem.ListViewSubItem();//创建ListView的子目录
lvsi.Text = "";
lvi.SubItems.Add(lvsi); // 将子目录添加到lvi中;
lvsi = new ListViewItem.ListViewSubItem();
lvsi.Text = di.LastAccessTime.ToString();
lvi.SubItems.Add(lvsi);
this.lwFileAndFolders.Items.Add(lvi);
}
foreach (System.IO.FileInfo fi in files)
{
lvi = new ListViewItem();
lvi.Text = fi.Name;
lvi.ImageIndex = 1;
lvi.Tag = fi.FullName;
lvsi = new ListViewItem.ListViewSubItem();
lvsi.Text = fi.Length.ToString();
lvi.SubItems.Add(lvsi);
this.lwFileAndFolders.Items.Add(lvi);
}
this.lwFileAndFolders.EndUpdate();
}
catch (System.Exception err)
{
MessageBox.Show("Error:"+err.Message);
}
}
private void btnBack_Click(object sender, EventArgs e)
{
if (folderCol.Count > 1)
{
PaintListView(folderCol[folderCol.Count - 2].ToString());
folderCol.RemoveAt(folderCol.Count - 1);
}
else
{
PaintListView(folderCol[0].ToString());
}
}
private void rdoLargeIcon_CheckedChanged(object sender, EventArgs e)
{
/* 因为事件使用它们的方法传递事件的时候,sender都指向了引起这个事件的控件的对象(对象的类型很多),
* 但是无论哪个控件调用了方法,其结果是一样的。这里我们制定了这个对象为RadioButton,因为此时此刻我们
* 是由这个单选按钮(RadioButton)引发的事件处理,我们这样转化后,就可以调用RadioButton里面的一些属性和方法
* 来帮助我们做出更加方面的判断,因为object是最顶层的基类,不一定具有RadioButton所有的属性和方法,但是RadioButton
* 继承object,则object所有的非private属性和方法我们这里都
4000
可以使用;
*/
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.LargeIcon;
}
private void rdoSmallIcon_CheckedChanged(object sender, EventArgs e)
{
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.SmallIcon;
}
private void rdoList_CheckedChanged(object sender, EventArgs e)
{
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.List;
}
private void rdoDetails_CheckedChanged(object sender, EventArgs e)
{
RadioButton rdb = (RadioButton)sender;
if (rdb.Checked)
this.lwFileAndFolders.View = View.Details;
}
}
}
相关文章推荐
- [转载]C# ListView用法详解
- wince程序 中使用Listview显示图标问题 (C#)
- ListView选中selectedItem上下移动 C#
- C# ListView 点击表头对数据进行排序功能的实现代码
- WPF 实现类似C#中ListView大图标模式,加入链接
- C#的ListView增强组件 ObjectListView
- C#获取ListView鼠标下的Item
- C# ListView用法详解
- C# ListView用法详解
- C#怎么取外部程序的listview,treeview的内容?
- C#-ListView-分类管理选择,新建项删除项---ShinePans
- C# ListView用法详解 很完整
- C#listview + 上下文菜单(鼠标右键菜单) ContextMenuStrip
- C# winfrom listView
- C# ListView双缓存代码,解决闪屏问题
- c# ListView 双缓存 避免闪烁
- C#通过WIN32 API 获取外部程序sysListview的值和TreeView的值
- C# listview 读取指定行数据
- C# ListView 删除选定行的两种方法
- 折腾了一早上的C# WPF ListView+Grid 实现图片+文字 自动换行排列 类似Windows资源管理器效果