C# ListView控件基本用法
2010-03-15 17:10
2081 查看
最近做一个通过C#来设置桌面背景的功能。用到了listView这个控件。查找资料发现这个不错
[b]ListView控件常用屬性
ListView控件的常用方法
ListView控件的常用事件
其它:
列表視圖的選項總是ListViewItem類的一個實例。ListViewItems有一個屬性SubItems,其中包含另一個類ListViewSubItem的實例。
ColumnHeader:
要使用列表視圖顯示列標題,需要把類ColumnHeader的實例添加到ListView的Columns集合加。
ImageList控件
ImageList控件提供了一個集合,可以用於存儲在窗體的其它控件中使用的圖像。
自己對ListView學習內容:
http://www.cnblogs.com/scottckt/archive/2008/01/16/1041327.html
[/b]
ListView 使用方法:(在View.Details模式下)
1、建立ListView 的標題
2、建立ListView 的Item
3、在ListView 的Item中的建立SubItem
如果將各部分拆分開來的方法為:
1、建立ListView 的標題
2、建立Item
3、建立SubItem
4、將SubItem加入到Item中
5、將Item加入到ListView 中
注:
在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); ;
}
}
}
}
c# ListView控件的常用屬性、方法及事件
Posted on 2008-01-15 10:24 eric(陈宽田) 阅读(3832) 评论(4) 编辑 收藏 所属分类: C#[b]ListView控件常用屬性
Activation | 控件用戶在列表視圖中激活選項的方式。含值如下: Standard:這個設置是用戶為自己的機器選擇的值 OneClick:單擊一個選項,激活它 TwoClick:雙擊一個選項,激活它 |
Alignment | 可以控件列表視圖中的選項對齊的方式。值如下: Default:如果用戶拖放一個選項,它將仍位於拖動前的位置 Left:選項與ListView控件的左邊界對齊 Top:選項與ListView控件的頂邊界對齊 SnapToGrid:ListView控件包含一個不可見的網絡,選項都放在該網絡中 |
AllowColumnReorder | 允許用戶改變列表視圖中列的順序。如果這麼做,就應確保即使改變了列的屬性順序,填充列表視圖的例程也能正確插入選項。 |
AutoArrange | 自動根據Alignment屬性排序。如果用戶把一個選項拖放到列表視圖的中央,且Alignment是Left,則選項會自動左對齊。只有在View屬性是LargeIco或SmaillIcon時,這個屬性才有意義。 |
CheckBoxes | 列表視圖中的每個選項會在其左邊顯示一個複選框。 |
CheckedInices CheckedItems | 利用這兩個屬性分別可以訪問索引和選項的集合,該集合包含列表中被選中的選項。 |
Columns | 列表視圖可以包含列,通過這個屬性可以訪誤碼列集合,通過該集合,可以增加或刪除列 |
FocusedItem | 包含視圖中有焦點的選項。如果沒有選項,該屬性就為Null |
FullRowSelect | 為True時,單擊一個選項,該選項所在的整行文本都會突出顯示。如果該屬性為False,則只有選項本向會突出顯示 |
GridLines | 為True時,列表視圖會在行和列之間繪製網絡線。只有View屬性為Details時,這個屬性才有意義 |
HeaderStyle | 列標題有顯示方式,有3種樣式: Clickable:列標題為一個按鈕 NonClickable:列標題不響就鼠標單擊 None:不顯示列標題 |
HoverSelection | 為True時,用戶可以把鼠標指針放在列表視圖的一個選項上,以選擇它 |
Items | 列表視圖的選項集合 |
LabelEdit | 為True時,用戶可以在Details視圖下編輯第一列的內容 |
LabelWrap | 為True時,標籤會自動換行,以顯示所有文本 |
LargeImageList | 這個屬性包含ImageList,而ImageList包含大圖像。這些圖像可以在View屬性為LargeIcon時使用。 |
MultiSelect | 可以多選 |
Scrollabel | 顯示滾動條 |
SelectedIndices SelectedItems | 這兩個屬性分別包含選中的索引和選項的集合 |
SmallImageList | 當View屬性為SmaillIcon時,這個屬性包含了ImageList,其中ImageList包含了要使用的圖像 |
Sorting | 可以讓列表視圖對包含的選項排序,有3種模式: Ascending Descending None |
StateImageList | ImageList包含圖像的蒙板,這些圖像蒙板可用作LargeImageList和SmallImageList圖像的覆蓋圖,表標定制的狀態 |
TopItem | 返回列表視圖頂部的選項 |
View | 列表視圖可以用4種不同的模式顯示其選項: LargeIcon:所有選項都在其旁邊顯示一個大圖標(32*32)和一個標籤 SamllIcon:所有選項都在其旁邊顯示一個小圖標(32*16)和一個標籤 List:只顯示一列。該列可以包含一個圖標和一個標籤 Details:可以顯示任意數量的列。只有第一列可以包含圖標 Tile:(只用於WindowsXp和較新的Windwos平台)顯示一個大圖標和一個標籤,在圖標的右邊顯示子項信息 |
BeginUpdate | 開始更新,直到調用EmdUpdate為止。當一次插入多個選項使用這個方法很有用,因為它會禁止視圖閃爍,並可以大大提高速度 |
Clear | 徹度清除視圖,刪除所有的選項和列 |
EndUpdate | 結束更新 |
EnsureVisible | 列表視圖滾動以顯示指定索引的選項 |
GetItemAt | 返回列表視圖中位於x,y的選項 |
AfterLabelEdit | 在編輯了標籤后,引發該事件 |
BeforeLabelEdit | 在用戶開始編輯標籤前,引發該事件 |
ColumnClick | 單擊一列時,引發該事件 |
ItemActivate | 在激活一個選項時,引發該事件 |
列表視圖的選項總是ListViewItem類的一個實例。ListViewItems有一個屬性SubItems,其中包含另一個類ListViewSubItem的實例。
ColumnHeader:
要使用列表視圖顯示列標題,需要把類ColumnHeader的實例添加到ListView的Columns集合加。
ImageList控件
ImageList控件提供了一個集合,可以用於存儲在窗體的其它控件中使用的圖像。
自己對ListView學習內容:
http://www.cnblogs.com/scottckt/archive/2008/01/16/1041327.html
[/b]
ListView 使用方法:(在View.Details模式下)
1、建立ListView 的標題
2、建立ListView 的Item
3、在ListView 的Item中的建立SubItem
如果將各部分拆分開來的方法為:
1、建立ListView 的標題
2、建立Item
3、建立SubItem
4、將SubItem加入到Item中
5、將Item加入到ListView 中
注:
在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); ;
}
}
}
}
相关文章推荐
- C# ListView控件基本用法
- Android ListView控件基本用法
- C#中comboBox控件的一些基本用法小结
- 【Android基本控件】ListView 的用法
- winforms中ListView控件基本用法
- 在C#应用程序中,对comboBox这个控件的一些基本用法
- C#中comboBox控件的一些基本用法小结
- 在C#应用程序中,对comboBox这个控件的一些基本用法
- 【Android基本控件】ListView 的用法
- C#ListView控件的用法
- C# Dev控件中的 PropertyGridControl 属性控件的基本用法以及排序
- 【Android基本控件】ListView 的用法
- c#服务器验证控件基本用法
- Android ListView控件基本用法
- c# winform listview控件简单用法
- RecyclerView的基本用法 (一个控件实现ListView, GridView等效果)+接口回调点击事件
- C#(windows media player 控件基本用法)
- Android ListView控件基本用法以及范例
- Android UI控件----ExpandableListView的基本用法
- Android ListView控件基本用法