WINFORM中使用拖曳动作

拖曳动作会让操作方便许多,也使程序更亲切了。C#中几乎所有控件都是支持这个动作的。

下面以拖一个文件夹到ListBox中,ListBox列出该文件夹内所有某种类型的文件为例。就像千千静听里,拖一个文件夹到播放列表,可以读出里面所有的音乐文件一样。

 

首先设置ListBox的AllowDrop属性为true。

在DragEnter事件中写入以下代码,用于将信息传递给DragDrop。没有这些代码,DragDrop是不会识别动作的

e.Effect = DragDropEffects.Move;

在DragDrop事件中写入以下代码

  DirectoryInfo TheFolder; string[] paths = (string[])e.Data.GetData(DataFormats.FileDrop);//拖进去的所有文件的路径,这里拖的是文件夹 foreach (string path in paths)//读取每一个文件夹里面包含的文件 { TheFolder = new DirectoryInfo(path);//初始化文件夹对象 foreach (FileInfo NextFile in TheFolder.GetFiles())//读取文件夹里面的文件 { if (System.Text.RegularExpressions.Regex.IsMatch(NextFile.Extension, @".cpp|.CPP"))//是否符合后缀 { for (int i = 0; i < SCFs.Count; i++) { if (SCFs[i].Path == NextFile.FullName) { isRepeated = true; } } if (!isRepeated) { this.listBox1.Items.Add(NextFile.FullName); SourceCodeFile SCF = new SourceCodeFile(); SCF.Path = NextFile.FullName; SCFs.Add(SCF); } } } }

你可能感兴趣的:(WINFORM中使用拖曳动作)