65.9K
CodeProject 正在变化。 阅读更多。
Home

Vista 样式地址栏,适用于 .NET 2.0/WinForms

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (10投票s)

2009年3月10日

CPOL

2分钟阅读

viewsIcon

74805

downloadIcon

2481

WinForms 版本的 Vista 样式地址栏,可以扩展以支持浏览文件系统以外的内容。

abe.png

引言

虽然 Windows Vista 仍然存在许多争议和讨论,但它实现的一些特性/更改相当酷。 但是,微软并没有真正让我们这些普通(或学生)开发人员使用一些很酷的 UI 更改。

本文/代码示例包含了一个 Vista 样式地址栏的个人实现,用于 .NET/WinForms 应用程序。 它基于一个简单的树/节点遍历,可以继承以浏览任何您喜欢的内容。

演示中包含一个示例实现,用于浏览文件系统树,但其功能有限(它只是为了说明它是如何工作的:)。

Using the Code

理解代码的最简单方法是下载并打开它,然后试用一下。

使用该栏的最简单方法是在设计视图中将其拖放到您的窗体上,然后在您的窗体的构造函数中添加以下代码

//Initialize the bar with a root node type.
this.AdBar.InitializeRoot(new FileSystemNode());

您需要做的就是传递给它一个根节点,并且节点本身应该直接向控件提供信息。 FileSystemNode 提供对您的 Windows 安装上找到的第一个逻辑驱动器的基本枚举。

要实现 IAddressNode 类,需要重写和实现一些简单的属性,然后自己实现三个实际的方法

  • UpdateNode() - 用于更新节点本身以进行任何更改(例如,在 FileSystemNode 中,它检查子文件夹更改和文件夹名称更改)
  • GetChild() - 根据唯一 ID 搜索给定的子节点(唯一 ID 是您定义的任何内容。在 FileSystemNode 中,我们使用文件夹的绝对路径作为唯一 ID)。
  • Clone() - 将给定的节点克隆为一个单独的值副本(而不仅仅是通过引用)。

结论

它简单且相对轻量级,只需要您实现自己的 IAddressNode 派生类,以便它可以遍历您认为合适的任何层次结构。:)

历史

  • 2009 年 7 月 3 日 - 首次将代码上传到 CodeProject
  • 2009 年 12 月 29 日 - 版本 2.0 支持“我的电脑”根节点和 VS2008,各种错误修复
  • 2010 年 4 月 10 日 - 版本 2.1 修复了溢出行为,以更好地利用可用空间。 对溢出生成进行轻微优化。
© . All rights reserved.