現在 Windows クリップボードに保存されているデータを取得して変数に保存し、そのデータをクリップボードに戻したいと考えています。
現在、私はこのコードを使用しています:
object l_oClipBrdData = Clipboard.GetDataObject();
Clipboard.SetDataObject(l_oClipBrdData ,true);
しかし、それを行った後、クリップボードは空です。
私は何を間違っていますか?
'Clipboard'オブジェクトを示す例を次に示します。
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);
}
}
Clipboard.GetDataObject()
IDataObject
あなたが呼び出すことができる実際のデータを取得したい場合は、クリップボードからを返しますGetData(typeof(dataType))
例:
int mydata = 100;
Clipboard.SetDataObject(mydata, true);
var clipData = Clipboard.GetDataObject().GetData(typeof(int));
使用できる事前定義されたデータタイプも多数あります
例:
if (Clipboard.ContainsData(DataFormats.Bitmap))
{
var clipData = Clipboard.GetData(DataFormats.Bitmap);
}
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
Clipboard.Flush();
の後に電話してみてくださいSetDataObject()
。