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?
El objeto que pase a SetDataObject () debería ser compatible con la serialización. Si este es tu propio tipo, márcalo con el atributo [Serializable].
Más información:
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.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()
.