使用设计器创建带有 ListView 和 TreeView 控件的资源管理器样式的界面


--------------=========================-------------------
                               MSDN 上的文章
--------------=========================-------------------
只提供了C#版...  VB 的请到MSDN看

创建包含 ListView 和 TreeView 控件的窗体
  1. 在“文件”菜单上指向“新建”,然后单击“项目”。

  2. 在“新建项目”对话框中,请执行以下操作:

    1. 在“项目类型”窗格中选择“Visual Basic 项目”或“Visual C# 项目”。

    2. 在“模板”窗格中选择“Windows 应用程序”。

  3. 单击“确定”。新建了一个 Windows 窗体项目。

  4. 向该窗体添加一个 SplitContainer 控件,并将其 Dock 属性设置为 Fill

  5. 向该窗体添加一个名为 imageList1ImageList,然后使用属性浏览器按所列顺序添加两个图标:一个文件夹图标和一个文档图标。

  6. 向该窗体添加一个名为 treeview1TreeView 控件,将其置于 SplitContainer 控件的左侧。在 treeView1 的属性浏览器中执行以下操作:

    1. Dock 属性设置为 Fill

    2. ImageList 属性设置为 imagelist1.

  7. 向该窗体中添加一个名为 listView1ListView 控件,将其置于 SplitContainer 控件的右侧。在 listview1 的属性浏览器中执行以下操作:

    1. Dock 属性设置为 Fill

    2. View 属性设置为 Details

    3. 单击 Columns 属性中的椭圆 (VisualStudioEllipsesButton 屏幕截图),以打开 ColumnHeader 集合编辑器。添加三列,并将其 Text 属性分别设置为 NameTypeLast Modified。单击“确定”关闭对话框。

    4. SmallImageList 属性设置为 imageList1.

  8. 实现代码以便将节点和子节点填充到 TreeView 中。示例代码从文件系统读取,并且要求应用程序目录中存在 folder.icodoc.ico, 这两个图标。


  9. private   void  PopulateTreeView()
    {
        TreeNode rootNode;
        
        DirectoryInfo info 
    = new DirectoryInfo(@"C:Documents and Settings");
        
    if (info.Exists)
        
    {
            rootNode 
    = new TreeNode(info.Name);
            rootNode.Tag 
    = info;
            GetDirectories(info.GetDirectories(), rootNode);
            treeView1.Nodes.Add(rootNode);
        }

    }


    private   void  GetDirectories(DirectoryInfo[] subDirs, 
        TreeNode nodeToAddTo)
    {
        TreeNode aNode;
        DirectoryInfo[] subSubDirs;
        
    foreach (DirectoryInfo subDir in subDirs)
        
    {
            aNode 
    = new TreeNode(subDir.Name, 00);
            aNode.Tag 
    = subDir;
            aNode.ImageKey 
    = "folder";
            subSubDirs 
    = subDir.GetDirectories();
            
    if (subSubDirs.Length != 0)
            
    {
                GetDirectories(subSubDirs, aNode);
            }

            nodeToAddTo.Nodes.Add(aNode);
        }

    }

  10. 在窗体的构造函数或 Load 事件处理方法中,调用上一步中的设置方法。

    public  Form1()
    {
        InitializeComponent();
        PopulateTreeView();
    }

  11. 处理 treeview1NodeMouseClick 事件,实现代码以便在单击某个节点时,用该节点的内容来填充 listview1
void  treeView1_NodeMouseClick( object  sender,
    TreeNodeMouseClickEventArgs e) 
{
    TreeNode newSelected 
= e.Node;
    listView1.Items.Clear();
    DirectoryInfo nodeDirInfo 
= (DirectoryInfo)newSelected.Tag;
    ListViewItem.ListViewSubItem[] subItems;
    ListViewItem item 
= null;

    
foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories())
    
{
        item 
= new ListViewItem(dir.Name, 0);
        subItems 
= new ListViewItem.ListViewSubItem[]
            
{new ListViewItem.ListViewSubItem(item, "Directory"), 
             
new ListViewItem.ListViewSubItem(item, 
                dir.LastAccessTime.ToShortDateString())}
;
        item.SubItems.AddRange(subItems);
        listView1.Items.Add(item);
    }

    
foreach (FileInfo file in nodeDirInfo.GetFiles())
    
{
        item 
= new ListViewItem(file.Name, 1);
        subItems 
= new ListViewItem.ListViewSubItem[]
            
new ListViewItem.ListViewSubItem(item, "File"), 
             
new ListViewItem.ListViewSubItem(item, 
                file.LastAccessTime.ToShortDateString())}
;

        item.SubItems.AddRange(subItems);
        listView1.Items.Add(item);
    }


    listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值