将文件拖到窗体上以打开文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将文件拖到窗体上以打开文件相关的知识,希望对你有一定的参考价值。
Example written 01/13/2011The following code shows how to implement functionality in your Windows Forms application, such that you'll be able to open a file that is dragged and dropped onto your program's form. This behavior is often desirable for programs that manipulate files in some way (renamers, encrypters, etc.) It's also nice for the uer to be able to have more than one way to open a file. This example implements opening via drag-dropping, and via a customary File->Open menu.
using System; using System.Windows.Forms; using System.Diagnostics; using System.IO; namespace BryanWinForms1 { public partial class Form1 : Form { private delegate void DelegateOpenFile(String s); //define delegate type DelegateOpenFile _openFileDelegate; //declares a delegate instance public Form1() { InitializeComponent(); this.AllowDrop = true; //must set this to true, for dragDrop to work //delegate needed so Form1_DragDrop() can asynchronously //invoke our program's OpenFile() method } private void openToolStripMenuItem_Click(object sender, EventArgs e) { openDlg.Filter = "Any File (*.*)|*.*"; openDlg.FileName = ""; openDlg.CheckFileExists = true; openDlg.CheckPathExists = true; if (openDlg.ShowDialog() != DialogResult.OK) return; OpenFile(openDlg.FileName); } private void OpenFile(string sFile) { //insert appropriate file-opening code here... MessageBox.Show(""" + sFile + "" will be opened."); } private void Form1_DragEnter(object sender, DragEventArgs e) { //we're only interested if a FILE was dropped on the form if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; } private void Form1_DragDrop(object sender, DragEventArgs e) { //good idea to use try-catch block, in case something goes wrong try { Array a = (Array)e.Data.GetData(DataFormats.FileDrop); if (a != null) { // Extract string from first array element // (ignore all files except first if number of files are dropped). string s = a.GetValue(0).ToString(); // Call OpenFile asynchronously. // Explorer instance from which file is dropped is not responding // the entire time that the DragDrop handler is active, so we need to return // immidiately (especially if OpenFile shows MessageBox). this.Activate(); // in the case Explorer overlaps this form } } catch (Exception ex) { Trace.WriteLine("Error in DragDrop function: " + ex.Message); // don't show MessageBox here - Explorer is waiting ! } } //next right-brace ends Form1 class } //next right-brace ends namespace }
以上是关于将文件拖到窗体上以打开文件的主要内容,如果未能解决你的问题,请参考以下文章