【问题标题】:desktop icon functionality in a window窗口中的桌面图标功能
【发布时间】:2009-10-04 21:08:02
【问题描述】:

我的妻子抱怨我在 Windows XP-Pro 桌面上有太多图标。

我希望能够快速将文件拖放到我想要打开的应用程序的图标上。而且我喜欢点击链接来打开常用的深度嵌套文件夹,而不是在那里导航。因此,我的桌面上有超过 100 个图标。

(我们共享同一个用户帐户,因为我们经常来回切换,并且因为我们都需要访问同一个电子邮件,所以单独的帐户不是答案。)

我想编写一个与 Windows 桌面具有相似功能的程序。然后我可以打开那个窗口来做拖放工作,但是,当最小化时,我妻子的桌面显示会变得稀疏。作为额外的奖励,我可以实现比桌面允许的更好的图标组织。

这类似于资源管理器窗口的功能,唯一的例外是桌面允许您对图标进行一些排列。 (例如,左侧的程序图标(最常用的靠近顶部),顶部的文件夹,右侧的数据文件。)

  1. 如何让图标显示在 Windows 窗体(或窗体上的适当控件)中? (例如,如果我放入记事本的链接或文件夹的链接。)

  2. 如果双击图标,如何执行与桌面相同的操作? (例如,如果双击文件夹的链接。)

  3. 如果图标被拖到桌面上,我如何采取与桌面相同的操作? (例如,将文本文件拖到记事本图标上。)

我正在使用 Visual Studio 和 C#.NET 进行编程。

我知道如何进行基本的拖放操作。

我不知道:
A. 在表单上使用什么控件来显示图标
B.如何找到图标
C. 桌面在各种情况下构建了哪些命令(所以我可以模拟功能)

我很抱歉这是一个多部分的问题,但如果不重新解释整个故事就很难分开。

【问题讨论】:

    标签: windows-xp icons desktop emulation


    【解决方案1】:

    这是一个大问题,但我会给你一些快速的想法,让事情朝着正确的方向发展。 WinForms 公开了实现这一点所需的功能,只需按照您想要的方式连接所有内容。

    您将要研究的关键部分是拖放,WinForms 对它的支持非常好。如果您将图标实现为 ImageBoxes,您可以在程序图标上设置 AllowDrop 属性,然后处理 DragDrop 事件并让它调用 System.Diagnostics.Process() 的重载,以使用拖放的文件名作为参数启动应用程序。

    就查找图标而言,大多数程序都将其图标作为资源包含在其 .EXE 文件或相关 .DLL 中。

    关于问题 C,基本问题是您希望在您的程序中具有哪些桌面行为? Explorer.exe 是一个庞大的应用程序,它的功能远远超出您的需要或您将需要或想要实现的功能。一旦你决定了你想要什么功能,就可以玩弄表单和图像框控件的 IntelliSense 事件列表。您会发现在 Windows 常用控件中免费为您提供了很多行为,并且通过处理适当的事件很容易添加其他行为。

    【讨论】:

    • 感谢您的回复。我想要的行为是原始问题中列出的行为:通过拖放添加程序图标,通过双击打开程序图标,将项目放在程序图标上并让该程序打开拖放的项目。我不喜欢和不想要的资源管理器中的大多数附加“功能”。
    • 该问题专门针对问题 C,您提到的其他功能在其他地方都有介绍。拖放的一个很酷的功能是它可以在 WInForms 和窗口的其他部分之间工作,因此您可以设置主窗体的 AllowDrop 属性,然后将图标从桌面拖到窗体上以创建适合该程序的新 ImageBox。您可以通过在图标框的 DoubleClick 事件处理程序中调用 System.Diagnostics.Process("program") 双击打开程序。
    【解决方案2】:

    你为什么不直接使用虚拟桌面??

    试试http://virtuawin.sourceforge.net/

    您将跳过大量编码。

    就在他们的页面上: “VirtuaWin 是适用于 Windows 操作系统 (Win9x/ME/NT/Win2K/XP/Win2003/Vista) 的虚拟桌面管理器。虚拟桌面管理器可让您在多个虚拟桌面(也称为“工作区”)上组织应用程序。虚拟桌面在 Unix/Linux 中非常常见,一旦您习惯使用它们,它们就会成为高效工作流程的重要组成部分。”

    【讨论】:

    • 感谢您的建议。我在 Visual Studio 不能很好地与 VirtuaWin 配合使用时遇到了问题……但我会更新到最新版本并重试。多年来,我一直喜欢在 UNIX 上使用多个桌面。但这并不能完全解决图标问题。我使用的所有图标都在我的所有虚拟桌面上,包括与我妻子共享的电子邮件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多