c# copy clipboard paste

c# - Obtener datos de allí al portapapeles de Windows



copy clipboard (4)

Aquí hay un ejemplo para demostrar el objeto ''Portapapeles'':

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); } }

Me gustaría obtener los datos almacenados actualmente en el Portapapeles de Windows y guardarlos en una variable, luego volver a poner los datos en el portapapeles.

En este momento estoy usando este código:

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

Pero después de hacer eso, el portapapeles está vacío.

¿Qué estoy haciendo mal?



Clipboard.GetDataObject() devolverá IDataObject desde el portapapeles, si desea obtener los datos reales, puede llamar a GetData(typeof(dataType))

Ejemplo:

int mydata = 100; Clipboard.SetDataObject(mydata, true); var clipData = Clipboard.GetDataObject().GetData(typeof(int));

También hay muchos tipos de datos predefinidos que puedes usar

Ejemplo:

if (Clipboard.ContainsData(DataFormats.Bitmap)) { var clipData = Clipboard.GetData(DataFormats.Bitmap); }


Intenta llamar a Clipboard.Flush(); después de SetDataObject() .