文章編號: 307966 - 上次校閱: 2008年7月30日 - 版次: 3.0

如何提供 Visual C# 應用程式中的檔案和拖功能

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文所述的逐步程序會示範如何提供 Visual C# 應用程式中的檔案和拖功能。清單方塊 控制項作為目的地的檔案和拖程序。

需求

此清單會列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Visual C#
本文假設您已熟悉下列主題:

  • Windows Form 列示方塊 控制項
  • Windows Form 事件處理

若要建置範例的步驟

清單方塊 控制項提供您需要處理的兩個-拖事件: DragEnterDragDropDragEnter 事件發生於您拖曳控制項的範圍內物件,而且用來判斷正在拖曳的物件是一個您想要允許卸除在控制項上。您處理這個事件,在其中一或多個檔案都拖曳至控制項的情況。這可讓物件拖曳到依上被拖曳的物件在控制項上時,會顯示適當的圖示。DragDrop 事件發生於正在拖曳該物件已釋放在控制項上。您處理這個事件來擷取物件。資料 物件用來擷取資料。

資料 物件 GetData 方法會傳回包含已拖曳至 清單方塊 控制項的檔案完整路徑名稱的字串陣列。您可以使用這個檔案的路徑資訊來執行檔案上所需的任何作業。例如使用 [System.IO 命名空間中的類別開啟和讀取該檔案將將檔案移動或複製檔案到新位置。在此範例您剛新增完整路徑拖曳至 清單方塊 控制項的檔案。

提供 Visual C# 應用程式中的檔案和拖功能,請依照下列步驟執行:
  1. 在 Visual C#.NET 或 Visual C# 2005年中建立新的 Windows Form 應用程式。預設會建立 Form1。
  2. 使用工具箱將 清單方塊 控制項加入至 Form1。
  3. 在 [屬性] 視窗中變更 [為 True 以容許物件拖曳至控制項上的 [清單方塊 控制項的 [AllowDrop 屬性]。
  4. 在 [方案總管] 中以滑鼠右鍵按一下 Form1,然後按一下 [檢視程式碼]。
  5. 若要處理 DragEnter 事件,加入 Windows Form 設計工具會在 Form1 類別中產生的程式碼區段下面下列方法:
    private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
    	if(e.Data.GetDataPresent(DataFormats.FileDrop))
    		e.Effect = DragDropEffects.All;
    	else
    		e.Effect = DragDropEffects.None;
    }
    					
  6. 若要處理 DragDrop 事件,將下列方法加入至 Form1 類別緊接在步驟 5 中新增的方法:
    private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
    	string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
    	int i;
    	for(i = 0; i < s.Length; i++)
    		listBox1.Items.Add(s[i]);
    }
    					
  7. 若要兩個事件處理常式關聯控制項事件,加入下列程式碼在 Form1 的建構函式中以 InitializeComponent 呼叫之後:
    this.listBox1.DragDrop += new
               System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
    this.listBox1.DragEnter += new
               System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
    
    					
  8. 建置並執行專案。
  9. 將一或多個檔案拖曳從桌面或另一個資料夾來 列示方塊 控制項。注意檔案的完整路徑加入至 清單方塊 控制項。

?考

如需詳細資訊請參閱下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
Control.DragEnter 事件
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragenter(VS.71).aspx (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragenter(vs.71).aspx)

Control.DragDrop 事件
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragdrop(VS.71).aspx (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragdrop(vs.71).aspx)

這篇文章中的資訊適用於:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbmt kbsweptvs2008 kbhowtomaster kbsample KB307966 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:307966? (http://support.microsoft.com/kb/307966/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。