程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 剪貼板剪切/復制與粘貼文件+1個待解決的問題

剪貼板剪切/復制與粘貼文件+1個待解決的問題

編輯:關於.NET

現在網上大多數對剪貼板的操作都只是對文本進行操作,很少有對文件進行操作的,在codeProject上找到了解決方法,但還有一個問題困擾了我(等下再說,其實放在首頁就是看看大家能不能幫忙解決)。

先看看具體的代碼:

剪切/復制文件

void CopyToClipboard(bool cut)
{
    string[] files = GetSelection();
    if(files != null)
    {
        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);
    }
}

對粘貼文件的處理:

粘貼文件的處理

private void pasteMenuItem_Click(object sender, System.EventArgs e)
{
    IDataObject data = Clipboard.GetDataObject();
    if (!data.GetDataPresent(DataFormats.FileDrop))
        return;

    string[] files = (string[])
      data.GetData(DataFormats.FileDrop);
    MemoryStream stream = (MemoryStream)
      data.GetData("Preferred DropEffect", true);
    int flag = stream.ReadByte();
    if (flag != 2 && flag != 5)
        return;
    bool cut = (flag == 2);
    foreach (string file in files)
    {
        string dest = homeFolder + "\\" + 
                      Path.GetFileName(file);
        try
        {
            if(cut)
                File.Move(file, dest);
            else
                File.Copy(file, dest, false);
        }
        catch(IOException ex)
        {
            MessageBox.Show(this, "Failed to perform the" + 
                " specified operation:\n\n" + ex.Message, 
                "File operation failed", 
                MessageBoxButtons.OK, MessageBoxIcon.Stop);
        }
    }

    RefreshView();
}

注意點:

一、把文件路徑的列表SetData到剪貼板,注意一定要是數組形式。對一個文件進行操作也要以數組方式。

二、把標志信息也按照一定的格式SetData到剪貼板

問題:如果在windows mobile中,在移動設備裡剪切/復制一個文件,發現在剪貼板中沒有任何東西,而普通的windows文件則會有路徑和標志位。現在的問題是如果從設備中剪切/復制文件,我怎麼讓PC能夠進行粘貼,因為PC上是不認類似”\\application...“的路徑的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved