• Winform/WPF Clipboard之剪切复制粘贴


     Winform

         // <summary>
            /// 复制或剪切文件至剪贴板(方法)
            /// </summary>
            /// <param name="files">需要添加到剪切板的文件路径数组</param>
            /// <param name="cut">是否剪切true为剪切,false为复制</param>
            public static void CopyToClipboard(string[] files, bool cut)
            {
                if (files == null) return;
                IDataObject data = new DataObject(DataFormats.FileDrop, files);
                MemoryStream memo = new MemoryStream(4);
                byte[] bytes = new byte[] { (byte)(cut ? 2 : 5), 0, 0, 0 };
                memo.Write(bytes, 0, bytes.Length);
                data.SetData("Preferred DropEffect", memo);
                Clipboard.SetDataObject(data);
            }
    
            /// <summary>
            /// 获取剪贴板中的文件列表(方法)
            /// </summary>
            /// <returns>System.Collections.List<string>返回剪切板中文件路径集合</returns>
            public static  List<string> GetClipboardList()
            {
                List<string> clipboardList=new List<string>();
                System.Collections.Specialized.StringCollection sc = Clipboard.GetFileDropList();
                for (int i = 0; i < sc.Count; i++)
                {
                    string listfileName = sc[i];
                    clipboardList.Add(listfileName);
                }
                return clipboardList;
            }

     wpf

    /// <summary>
        /// 复制粘贴帮助类
        /// </summary>
        public class ClipboardHelper
        {
    
            /// <summary>
            /// 复制到剪切板
            /// </summary>
            /// <param name="text">文字</param> 
            public static void CopyText(string text)
            {
                Clipboard.SetText(text);
            }
    
            /// <summary>
            /// 复制或剪切文件到剪切板
            /// </summary>
            /// <param name="filePath">文件路径数组</param>
            /// <remarks>清空剪切板</remarks>
            public static void SetFileDrop(string filePath)
            {
                if (filePath == null) return;
                SetFileDropList(new[] { filePath });
            }
            /// <summary>
            /// 复制或剪切文件到剪切板
            /// </summary>
            /// <param name="files">文件路径数组</param>
            /// <remarks>清空剪切板</remarks>
            public static void SetFileDropList(string[] files)
            {
                Clipboard.Clear();//清空剪切板 
                StringCollection strcoll = new StringCollection();
                foreach (var file in files)
                {  
                    strcoll.Add(file);
                }
                Clipboard.SetFileDropList(strcoll);
            }
    
            /// <summary>
            /// 复制或剪切文件到剪切板
            /// </summary>
            /// <param name="filePath">文件路径数组</param>
            /// <param name="cut">true:剪切;false:复制</param>
            public static void CopyFile(string filePath, bool cut = false)
            {
                if (filePath == null) return;
                CopyFileList(new[] { filePath }, cut);
            }
            /// <summary>
            /// 复制或剪切文件到剪切板
            /// </summary>
            /// <param name="files">文件路径数组</param>
            /// <param name="cut">true:剪切;false:复制</param>
            public static void CopyFileList(string[] files, bool cut = false)
            {
                if (files == null) return;
                IDataObject data = new DataObject(DataFormats.FileDrop, files);
                MemoryStream memo = new MemoryStream(4);
                byte[] bytes = new byte[] { (byte)(cut ? 2 : 5), 0, 0, 0 };
                memo.Write(bytes, 0, bytes.Length);
                data.SetData("PreferredDropEffect", memo);
                Clipboard.SetDataObject(data, false);
            }
    
            /// <summary>
            /// 获取剪贴板中的文件列表(方法)
            /// </summary>
            /// <returns>System.Collections.List<string>返回剪切板中文件路径集合</returns>
            public static List<string> GetClipboardList()
            {
                List<string> clipboardList = new List<string>();
                StringCollection sc = Clipboard.GetFileDropList();
                foreach (var listFileName in sc)
                {
                    clipboardList.Add(listFileName);
                }
                return clipboardList;
            }
        }
  • 相关阅读:
    Python批量获取京东商品列表信息
    AxureRP8.1(注册码)破解汉化教程
    sp_getAppLock使用[转]
    rebar3 escriptize
    三层次解析模型(其二):是何、为何、如何
    三层次解析模型(其一):无限、绝对、完美
    wpf项目引入System.Windows.Forms报错
    idea 批量修改
    Android studio 模拟器无法联网问题
    git
  • 原文地址:https://www.cnblogs.com/xcsn/p/4678364.html
Copyright © 2020-2023  润新知