6

現在 Windows クリップボードに保存されているデータを取得して変数に保存し、そのデータをクリップボードに戻したいと考えています。

現在、私はこのコードを使用しています:

object l_oClipBrdData = Clipboard.GetDataObject();
Clipboard.SetDataObject(l_oClipBrdData ,true);

しかし、それを行った後、クリップボードは空です。

私は何を間違っていますか?

4

4 に答える 4

5

'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);
          }
    }
于 2013-01-31T21:48:19.100 に答える
3

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);
        }
于 2013-01-31T21:57:20.633 に答える
1

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

于 2013-01-31T21:44:27.977 に答える
0

Clipboard.Flush();の後に電話してみてくださいSetDataObject()

于 2014-06-20T17:18:31.087 に答える