ListView

来源:互联网 发布:丰城网络问政有用吗 编辑:程序博客网 时间:2024/04/30 15:32
 
 
 
ListView
 
ListView概述
 
ListView控件包括ColumnHeader(列标题)ListViewItem(数据行)
 
ListViewColumns属性是所有ColumnHeader(列标题)的集合。
 
ListViewItems属性是所有ListViewItem(数据行)的集合。
 
lv.Items[0]:表示lv的第一行。
lv.Items[0].lv.Items.SubItems[0].Text:表示lv的第一行的第一列的值。
 
lv.Items[0].Text与lv.Items[0].SubItems[0].Text都是访问第0行第0列
 
ListView主要属性:
FocusedItes:获取控件中当前有焦点的项。
MultiSelect:是否可以有选取多个项。
SelectedItems:选定的项。
Sorting:指定ListView项应遵循的排序顺序。
FullRowSelect::设置为.t.时可以整行地选择数据。
HotTracking:设置为.t.时,鼠标所在行将以高亮度显示。
View:指法列表以哪种方式显示,包括:LargetIcon(大图标)SmallIcon(小图标)Details(详细信息)List(列表)。默认为LargeIcon
GridLine:设置为.t.时控件将显示网格线。(只作用于Details”视图)
Columns所有ColumnHeader(列标题)的集合。
Items:所有ListViewItem(数据行)的集合。
 
ListView添加列的两种方法:见代码:
       public void getListViewMsg(ListView lv)
        
{
            
//设置显示方式:详细信息
            lv.View = View.Details;
            
//显示CheckBox复选框
            lv.CheckBoxes = true;
            
//显示网格线
            lv.GridLines = true;

            
//鼠标所在行将以高亮度显示
            lv.HotTracking = true;

            
//整行地选择数据
            lv.FullRowSelect = true;
            
//建立一个标题列
            ColumnHeader nameHeader = new ColumnHeader();

            
//设置标题列的标题
            nameHeader.Text = "姓名";

            
//设置标题列的对齐方式
            nameHeader.TextAlign = HorizontalAlignment.Center;

            
//设置标题列的显示宽度
            nameHeader.Width = 100;

            
//第一种方法
            
//将nameHeader列添加到ListView的Columns中
            lv.Columns.Add(nameHeader);

            
//第二种方法
            lv.Columns.Add("性别",60,HorizontalAlignment.Center);
            lv.Columns.Add(
"年纪",60,HorizontalAlignment.Center);

            
//建数据行
            ListViewItem lstItem = new ListViewItem();

            
//添加第0列的值和添加其他列的值有区别
            lstItem.SubItems[0].Text = "张三";
            lstItem.SubItems.Add(
"");
            lstItem.SubItems.Add(
"28");

            lv.Items.Add(lstItem);

            
            lstItem 
= new ListViewItem();
            lstItem.SubItems[
0].Text = "李四";
            lstItem.SubItems.Add(
"");
            lstItem.SubItems.Add(
"23");

            lv.Items.Add(lstItem);
        }


  

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

 

 

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
    
{
        
public Form1()
        
{
            InitializeComponent();
            
this.ListViewSet();

        }


         
/// <summary>
         
/// ListView 设置
         
/// </summary>

         private void ListViewSet()
         
{
             
this.GetFolderTreeView(@"C:");

             
//ListView显示方式
             lv.View = View.Details;

         }



         
/// <summary>
         
/// 得到目录中的内容
         
/// </summary>

         private void GetFolderTreeView(string path)
         
{
             lv.Clear();
             
增加Item的标题,共有三个列

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

                 DirectoryInfo diInfo 
= new DirectoryInfo(path);
                 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);

                 lv.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);

                 lv.Items.Add(lviItem);
             }

             
//结束更新
             lv.EndUpdate();
         }


         
/// <summary>
         
/// 定义变量存放路径
         
/// </summary>

         string sfileName = "";

        
/// <summary>
        
/// 在激活一项时发生
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void lv_ItemActivate(object sender, EventArgs e)
        
{
            ListView lvControl 
= (ListView)sender;
            
//Tag属性获得与用户关联的数据
            
//如:C:Program FilesKuGoo2007
            sfileName = lvControl.SelectedItems[0].Tag.ToString();
            
if (lvControl.SelectedItems[0].Text == "")
            
{
              
//  MessageBox.Show(lv.SelectedItems[0].Text);
                try
                
{
                    System.Diagnostics.Process.Start(sfileName);
                }

                
catch
                
{
                    
return;
                }

            }

            
else
            
{

                GetFolderTreeView(sfileName);
            }

        }


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

        }


        }

    }


原创粉丝点击