/// <summary> /// 获得拖放列表中符合要求的拖放项 /// </summary> /// <param name="data">拖放数据</param> /// <param name="enableFolder">是否允许文件夹</param> /// <param name="enableFile">是否允许文件</param> /// <param name="fileExtensions">允许的文件类型</param> /// <returns>返回符合要求的文件列表</returns> public static IEnumerable <string> GetAvailableFileItem(this DataObject data, bool enableFolder, bool enableFile, HashSet <string> fileExtensions = null) { if (!data.ContainsFileDropList()) { return(null); } return(data.GetFileDropList().Cast <string>().Where( s => (enableFolder && System.IO.Directory.Exists(s)) || (enableFile && System.IO.File.Exists(s) && (fileExtensions == null || fileExtensions.Count == 0 || fileExtensions.Contains("*") || fileExtensions.Contains(System.IO.Path.GetExtension(s).Trim('.')))) )); }
/// <summary> /// 判断拖放列表是否有任何一个符合要求的拖放项 /// </summary> /// <param name="data">拖放数据</param> /// <param name="enableFolder">是否允许文件夹</param> /// <param name="enableFile">是否允许文件</param> /// <param name="fileExtensions">允许的文件类型</param> /// <returns>如果至少一个符合要求,则返回true,否则返回false</returns> public static bool HasAvailableFileItem(this DataObject data, bool enableFolder, bool enableFile, params string[] fileExtensions) { if (!data.ContainsFileDropList()) { return(false); } return(data.GetFileDropList().Cast <string>().Any( s => (enableFolder && System.IO.Directory.Exists(s)) || (enableFile && System.IO.File.Exists(s) && (fileExtensions.IsEmpty() || fileExtensions.Contains(System.IO.Path.GetExtension(s).Trim('.')))) )); }
public void TestAudio () { DataObject d = new DataObject (); byte[] b = new byte[] { 1, 2, 3 }; d.SetAudio (b); Assert.AreEqual (true, d.ContainsAudio (), "A1"); Assert.AreEqual (false, d.ContainsFileDropList (), "A2"); Assert.AreEqual (false, d.ContainsImage (), "A3"); Assert.AreEqual (false, d.ContainsText (), "A4"); Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5"); Assert.AreEqual (b.Length, d.GetAudioStream ().Length, "A6"); }
public void TestText () { DataObject d = new DataObject (); d.SetText ("yo"); Assert.AreEqual (false, d.ContainsAudio (), "A1"); Assert.AreEqual (false, d.ContainsFileDropList (), "A2"); Assert.AreEqual (false, d.ContainsImage (), "A3"); Assert.AreEqual (true, d.ContainsText (), "A4"); Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5"); Assert.AreEqual ("yo", d.GetText (), "A6"); Assert.AreEqual ("yo", d.GetData (DataFormats.StringFormat), "A6-1"); d.SetText ("<html></html>", TextDataFormat.Html); Assert.AreEqual (true, d.ContainsText (), "A7"); Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A8"); Assert.AreEqual (true, d.ContainsText (TextDataFormat.Html), "A9"); Assert.AreEqual (false, d.ContainsText (TextDataFormat.Rtf), "A10"); Assert.AreEqual (true, d.ContainsText (TextDataFormat.Text), "A11"); Assert.AreEqual (true, d.ContainsText (TextDataFormat.UnicodeText), "A12"); // directly put a string d.SetData ("yo"); Assert.AreEqual (true, d.ContainsText (TextDataFormat.Text), "A13"); Assert.AreEqual (true, d.ContainsText (TextDataFormat.UnicodeText), "A14"); Assert.AreEqual ("yo", d.GetData (DataFormats.StringFormat), "A15"); Assert.AreEqual ("yo", d.GetData (DataFormats.Text), "A16"); Assert.AreEqual ("yo", d.GetData (DataFormats.UnicodeText), "A17"); }
public void TestImage () { DataObject d = new DataObject (); Image i = new Bitmap (16, 16); d.SetImage (i); Assert.AreEqual (false, d.ContainsAudio (), "A1"); Assert.AreEqual (false, d.ContainsFileDropList (), "A2"); Assert.AreEqual (true, d.ContainsImage (), "A3"); Assert.AreEqual (false, d.ContainsText (), "A4"); Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5"); Assert.AreSame (i, d.GetImage (), "A6"); }
public void TestFileDrop () { DataObject d = new DataObject (); StringCollection sc = new StringCollection (); sc.AddRange (new string[] {"A", "B", "C"}); d.SetFileDropList (sc); Assert.AreEqual (false, d.ContainsAudio (), "A1"); Assert.AreEqual (true, d.ContainsFileDropList (), "A2"); Assert.AreEqual (false, d.ContainsImage (), "A3"); Assert.AreEqual (false, d.ContainsText (), "A4"); Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5"); Assert.AreEqual (sc.Count, d.GetFileDropList ().Count, "A6"); }
private void treeView_DragOver(object sender, DragEventArgs e) { DataObject o = new DataObject(e.Data); if (o.ContainsFileDropList()) { FileTreeNode node = (FileTreeNode)treeView.GetNodeAt(treeView.PointToClient(new Point(e.X, e.Y))); if (node != null && node.File.Type == FileSystemObjectType.Directory) { if ((e.AllowedEffect & DragDropEffects.Move) != 0 && (e.KeyState & 8) == 0) // Ctrl is pressed { e.Effect = DragDropEffects.Move; return; } else if ((e.AllowedEffect & DragDropEffects.Copy) != 0) { e.Effect = DragDropEffects.Copy; return; } } } e.Effect = DragDropEffects.None; }
private void treeView_DragDrop(object sender, DragEventArgs e) { DataObject o = new DataObject(e.Data); if (o.ContainsFileDropList()) { FileTreeNode node = (FileTreeNode)treeView.GetNodeAt(treeView.PointToClient(new Point(e.X, e.Y))); if (node != null && node.File.Type == FileSystemObjectType.Directory) { StringCollection files = o.GetFileDropList(); Paste(node, files, e.Effect == DragDropEffects.Move ? false : true); } } }
public bool LoadDataObject(object Src) { try { DataObject d = new DataObject(Src); if (d.ContainsImage()) { if (LoadImage(d.GetImage())) return true; } if (d.ContainsFileDropList()) { foreach (string FName in d.GetFileDropList()) { try { if (LoadImage(FName)) return true; } catch { } } } if (d.ContainsText()) { string FName = d.GetText().Trim(); if ((FName.IndexOf("http://") == 0) || (FName.IndexOf("https://") == 0)) { if (LoadImageFromUrl(FName)) return true; } else { if (File.Exists(FName)) { if (LoadImage(FName)) return true; } } } } catch (Exception Ex) { MessageBox.Show(Ex.ToString()); } return false; }
public bool ContainsFileDropList() { return(_dao.ContainsFileDropList()); }