[C#] Multi line Clipboard

Iniciado por Siuto, 18 Agosto 2010, 00:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Siuto

¿Como hago para copiar una cadena multilinea al portapapeles?


Código (csharp) [Seleccionar]
Clipboard.SetText("abc\n123");

Asi es como lo estoy haciendo, pero cuando hago Ctrl + V en el notepad me sale:

abc123

en vez de:

abc
123

[D4N93R]

Hola!

Bueno hay que espeficiarle al Clipboard que es lo que contiene:

http://msdn.microsoft.com/en-us/library/system.windows.forms.dataformats_fields.aspx

http://msdn.microsoft.com/en-us/library/system.windows.dataformats.aspx

Simplemente pasarle el formato en la sobrecarga.

Posiblemente con Unicode funcione, sino prueba Rtf que si funciona.

Saludos!

Siuto

Se me olvido de ponerlo en el post anterior pero probe con los formatos:

Código (csharp) [Seleccionar]
TextDataFormat.Html
TextDataFormat.Rtf
TextDataFormat.Text
TextDataFormat.UnicodeText


Y no es la solucion...

[D4N93R]

Me acordé, en Windows una línea nueva es \r\n xD Prueba eso, que estoy 99% seguro de que si funciona.. xD Y con DataFormats.Text ..  :P

raul338

Usa System.Enviroment.NewLine; (Nota: Enviroment puede variar :xD)

[D4N93R]

Cita de: raul338 en 18 Agosto 2010, 14:30 PM
Usa System.Enviroment.NewLine; (Nota: Enviroment puede variar :xD)

Si usas eso te dara \r\n en windows y \n en linux. xD

Siuto

Con cualquiera de las dos soluciones resolvi el problema :D

Pero me surge otra dura, porque en realidad el texto que queria pasar al Clipboard no era una cadena harcodeada asi como puse en el ejemplo, si no que son unas lineas sacadas de un Rich TextBox que cuando las leo no me respeta las nuevas lineas a pesar de que cuando me muestra el texto si...


Código (csharp) [Seleccionar]
Clipboard.SetText(richTextBox.Text)

Asi es como hago y el problema ya lo solucione copiando el texto antes de meterlo en el richTextBox, pero solo por curiosidad ¿existe alguna forma de sacarlo de ahi con el formato correcto?

[D4N93R]

Si, usando TextDataFormat.Rtf :)