标题:求:treeview的连接
只看楼主
court1982120
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-29
 问题点数:0 回复次数:12 
求:treeview的连接
我刚开始学C#,希望高手指点一下:
怎样才能实现treeview和另一个容器控件的连接,实现window文件管理器的效果
搜索更多相关主题的帖子: treeview 
2006-11-29 10:13
court1982120
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-29
得分:0 

怎么把treeview和listview连接起来啊

2006-11-29 15:16
CrazyWeed0907
Rank: 2
等 级:新手上路
威 望:5
帖 子:1385
专家分:0
注 册:2006-5-30
得分:0 

在“文件”菜单上指向“新建”,然后单击“项目”。

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

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

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

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

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

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

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

将 Dock 属性设置为 Fill。

将 ImageList 属性设置为 imagelist1.

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

将 Dock 属性设置为 Fill。

将 View 属性设置为 Details。

单击 Columns 属性中的椭圆 (),以打开 ColumnHeader 集合编辑器。添加三列,并将其 Text 属性分别设置为 Name、Type 和 Last Modified。单击“确定”关闭对话框。

将 SmallImageList 属性设置为 imageList1.

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

Visual Basic 复制代码
Private Sub PopulateTreeView()
Dim rootNode As TreeNode

Dim info As New DirectoryInfo("C:\Documents and Settings")
If info.Exists Then
rootNode = New TreeNode(info.Name)
rootNode.Tag = info
GetDirectories(info.GetDirectories(), rootNode)
treeView1.Nodes.Add(rootNode)
End If

End Sub

Private Sub GetDirectories(ByVal subDirs() As DirectoryInfo, _
ByVal nodeToAddTo As TreeNode)

Dim aNode As TreeNode
Dim subSubDirs() As DirectoryInfo
Dim subDir As DirectoryInfo
For Each subDir In subDirs
aNode = New TreeNode(subDir.Name, 0, 0)
aNode.Tag = subDir
aNode.ImageKey = "folder"
subSubDirs = subDir.GetDirectories()
If subSubDirs.Length <> 0 Then
GetDirectories(subSubDirs, aNode)
End If
nodeToAddTo.Nodes.Add(aNode)
Next subDir

End Sub



C# 复制代码
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, 0, 0);
aNode.Tag = subDir;
aNode.ImageKey = "folder";
subSubDirs = subDir.GetDirectories();
if (subSubDirs.Length != 0)
{
GetDirectories(subSubDirs, aNode);
}
nodeToAddTo.Nodes.Add(aNode);
}
}

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

Visual Basic 复制代码
Public Sub New()
InitializeComponent()
PopulateTreeView()

End Sub 'New



C# 复制代码
public Form1()
{
InitializeComponent();
PopulateTreeView();
}

处理 treeview1 的 NodeMouseClick 事件,实现代码以便在单击某个节点时,用该节点的内容来填充 listview1。

Visual Basic 复制代码
Private Sub treeView1_NodeMouseClick(ByVal sender As Object, _
ByVal e As TreeNodeMouseClickEventArgs) _
Handles treeView1.NodeMouseClick

Dim newSelected As TreeNode = e.Node
listView1.Items.Clear()
Dim nodeDirInfo As DirectoryInfo = _
CType(newSelected.Tag, DirectoryInfo)
Dim subItems() As ListViewItem.ListViewSubItem
Dim item As ListViewItem = Nothing

Dim dir As DirectoryInfo
For Each 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)
Next dir
Dim file As FileInfo
For Each 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)
Next file

listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)

End Sub



C# 复制代码
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);
}



“十步杀一人,千里不留行。事了拂衣去,深藏身与名。”
2006-11-29 15:30
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
得分:0 
这斑竹不是白当的啊

2006-11-29 15:58
yelang7
Rank: 1
等 级:新手上路
威 望:1
帖 子:265
专家分:0
注 册:2006-11-3
得分:0 
够牛的.

想象和行动一致,做最棒的 IT 人. http://yelang7.
2006-11-29 16:26
court1982120
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-29
得分:0 

C# 复制代码
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);
}

我将这些添加后运行,出现错误说是不是缺少using命令
这是怎么会事啊

2006-11-30 17:42
court1982120
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-29
得分:0 
DirectoryInfo
nodeDirInfo
ColumnHeaderAutoResizeStyle
这几个都无法识别
2006-11-30 17:43
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
加上

飘过~~
2006-11-30 21:07
loki
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-4-25
得分:0 
斑竹做到这样
我已无话可说

一个字

2006-11-30 22:39
给心加点温
Rank: 1
等 级:新手上路
威 望:1
帖 子:98
专家分:0
注 册:2006-11-9
得分:0 

厉害


2006-12-01 16:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-106038-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018339 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved