繁体   English   中英

窗口中的桌面图标功能

[英]desktop icon functionality in a window

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

我希望能够将文件快速拖放到要打开的应用程序的图标上。 我喜欢单击一个链接来打开经常使用的深层嵌套文件夹,而不是在其中导航。 因此,我在桌面上有100多个图标。

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

我想编写一个程序,该程序具有与Windows桌面相似的功能。 然后,我可以打开该窗口来进行拖放工作,但是如果将其最小化,则会为我的妻子保留稀疏的桌面显示。 另外,我可以实现比桌面允许的图标更好的组织方式。

这类似于“资源管理器”窗口的操作,不同之处在于,桌面允许您对图标进行某种排列。 (例如,程序图标在左侧(最常用的图标在顶部),文件夹在顶部,数据文件在右侧。)

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

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

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

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

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

我不知道:
A.在窗体上使用哪些控件来显示图标
B.如何找到图标
C.桌面在各种情况下会生成什么命令(因此我可以模拟功能)

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

这是一个很大的问题,但是我会给您一些快速的思考,以使事情朝着正确的方向发展。 WinForms公开了实现此功能所需的功能,这只是将所有内容按所需方式进行布线的问题。

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

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

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

您为什么不只使用虚拟桌面?

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

您将跳过很多编码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM