簡體   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