我想獲取當前存儲在Windows剪貼板中的數據並將其保存在一個變量中,然後將數據放回剪貼板。獲取數據然後返回到Windows剪貼板
現在,我使用此代碼:
object l_oClipBrdData = Clipboard.GetDataObject();
Clipboard.SetDataObject(l_oClipBrdData ,true);
但這樣做剪貼板是空的了。
我在做什麼錯?
我想獲取當前存儲在Windows剪貼板中的數據並將其保存在一個變量中,然後將數據放回剪貼板。獲取數據然後返回到Windows剪貼板
現在,我使用此代碼:
object l_oClipBrdData = Clipboard.GetDataObject();
Clipboard.SetDataObject(l_oClipBrdData ,true);
但這樣做剪貼板是空的了。
我在做什麼錯?
傳遞給SetDataObject()的對象應支持序列化。如果這是你自己的類型,用[Serializable]屬性標記它。
更多信息:
http://msdn.microsoft.com/en-gb/library/cs5ebdfz(v=vs.90).aspx
http://www.codeproject.com/Articles/8102/Saving-and-obtaining-custom-objects-to-from-Window
該對象從剪貼板中拉出。 –
沒有例外,它不是我的對象,它是一個已經在剪貼板中的對象。它可以是任何文本,打印屏幕文件或其他任何東西..我將其更改爲IdataObject - 仍然不起作用 – user1472066
這裏是展示 '剪貼板' 對象的例子:如果
string text;
string[] a;
if (Clipboard.ContainsText())
{
text = Clipboard.GetText(TextDataFormat.Text);
// the following could have been done simpler with
// a Regex, but the regular expression would be not
// exactly simple
if (text.Length > 1)
{
// unify all line breaks to \r
text = text.Replace("\r\n", "\r").Replace("\n", "\r");
// create an array of lines
a = text.Split('\r');
// join all trimmed lines with a space as separator
text = "";
// can't use string.Join() with a Trim() of all fragments
foreach (string t in a)
{
if (text.Length > 0)
text += " ";
text += t.Trim();
}
Clipboard.SetDataObject(text, true);
}
}
爲什麼你要專注於文本。問題似乎一般。爲什麼Q中的代碼不像執行者期望的那樣?如果您要將文本放在剪貼板上,請使用SetText。 –
該示例旨在演示如下步驟:1.)確保剪貼板包含您期望/希望類型的數據2.)複製數據3.)處理數據4.)將其寫回。爲了它自己,這個例子很有用。我通過任務欄快捷方式每天多次調用它,以將帶有換行符的文本轉換爲適合作爲文件名的字符串。 –
我成功地這樣做了文字..但這還不夠。 我想要做的是創建一個剪貼板,可以存儲更多的1項目,這樣我就可以複製和粘貼東西,而不必每次按CTRL + C覆蓋複製的數據。 如果我使用setText和getText,代碼完美工作..但我希望它能夠處理可能存儲在剪貼板中的所有內容。所以我想拿取剪貼板中的任何內容,將其存儲起來,然後將其完全按原樣放回 – user1472066
Clipboard.GetDataObject()
從剪貼板返回IDataObject
,你想獲得實際的數據,你可以撥打GetData(typeof(dataType))
例子:
int mydata = 100;
Clipboard.SetDataObject(mydata, true);
var clipData = Clipboard.GetDataObject().GetData(typeof(int));
也有很多predifined數據類型,你可以用
例子:
if (Clipboard.ContainsData(DataFormats.Bitmap))
{
var clipData = Clipboard.GetData(DataFormats.Bitmap);
}
你有沒有例外? –
運行此代碼時剪貼板上的內容是什麼?另外,你爲什麼使用對象?它是IDataObject。 –