.NET 文件浏览器






2.47/5 (6投票s)
2007年10月27日
2分钟阅读

39875

616
一个完全基于框架的 .NET 文件浏览器

引言
我一直在查找,发现大多数 .NET 文件浏览解决方案都是基于 Win API 调用构建的。除了其他考虑因素外,这意味着这些应用程序将访问非托管资源,因此它们需要非常高的 CAS 权限才能运行,并且可能涉及安全风险。请注意,即使您没有调用任何 API,您可能仍会面临一些其他的安全限制,例如拥有运行应用程序所需的 CAS 权限或系统权限,以允许运行该应用程序的用户访问文件系统(基于角色的安全性)。
背景
理解代码的工作方式不需要特殊的背景知识。
Using the Code
只有几点需要说明。
首先,在尝试访问驱动器(读取内容或驱动器属性)之前,始终检查您要列出的驱动器是否已准备好。这可能看起来微不足道,但如果您不这样做,在处理光盘/磁性/网络映射驱动器时,您可能会遇到异常和长时间延迟。
private void Form1_Load(object sender, EventArgs e) {
foreach(DriveInfo di in DriveInfo.GetDrives()) {
TreeNode tn = new TreeNode();
string nodeText = string.Empty;
if (di.IsReady)
其次,您会发现这种方法...
private TreeNode AddChildNodes(TreeNode node, bool final) {
if (final) {
return node;
}
final
参数的目的是在传递的节点是最终节点(树的叶子)时停止导航树。如果您尝试读取叶子的子节点,将会得到一个异常。这种解决方法与我实现此解决方案的方式有关,而不是与问题本身的性质有关。还有许多其他解决方法。
最后,您可能会注意到,我会在左侧窗格中显示时立即用其直接子项填充所有文件夹的相应节点(即使这些子文件夹未被显示)。
private void tvFolders_AfterExpand(object sender, TreeViewEventArgs e) {
foreach (TreeNode node in e.Node.Nodes) {
AddChildNodes(node, false);
}
}
这是为了在显示的文件夹左侧显示“+”号。再次说明,还有许多其他方法可以解决这个问题。我只是认为这最适合这个解决方案。
最终评论
希望这能帮到你...
历史
- 2007 年 10 月 27 日:初始发布