2008-11-12 23 views
5

Estoy tratando de copiar una imagen de un archivo y el texto de un archivo en el portapapeles. Mi intención es abrir un documento de Word o un correo electrónico de Outlook y pegar tanto el texto como la imagen en un comando de pegado estándar (CTRL-V, por ejemplo). Puedo hacer ambas cosas por separado con bastante facilidad, pero hacer ambas cosas en una sola operación no parece funcionar.¿Cómo copio una imagen y texto en el portapapeles como un solo objeto?

Esta es la forma que tengo los dos trabajando como operaciones separadas (sólo las líneas de código pertinentes de golf, con try/catch quitó etc.):

agregar la imagen al portapapeles:

.. .

Bitmap imageToAdd = new Bitmap(imageFilePath); 
Clipboard.SetImage(imageToAdd); 

...

Añadir texto al portapapeles:

...

StreamReader rdr = new StreamReader(textFilePath); 
string text = rdr.ReadToEnd(); 

Clipboard.SetText(text); 

...

estoy usando C# y .NET 2.0 Framework y la orientación de Windows XP (y probablemente de Vista en un futuro próximo).

TIA

Respuesta

1

me di solamente un objeto puede transmitirse en

En ese caso, cuando el usuario presiona el comando para pegar, el código podría ejecutar dos funciones , o una función de forma recursiva, y cada vez obtenga los datos que desea y péguelos.

Por lo tanto, observe el bucle o la recursividad.

1

Tal vez usted podría utilizar SetDataObject que requiere un parámetro de objeto, se puede usar una matriz de objetos?

La matriz de objetos puede contener los datos requeridos.

Vea este enlace:.

http://msdn.microsoft.com/en-us/library/5b8kt5z4.aspx

+0

¿Entenderá un programa como Outlook o MS Word mostrar ambos objetos si lo hago con una matriz? Tendré que poder abrir cualquier programa y presionar CTRL-V para pegar ambos objetos a la vez. –

4

Puede usar RTF, que podría combinar texto y gráficos. Tenga en cuenta que PUEDE tener CF_BITMAP y CF_TEXT en el portapapeles al mismo tiempo. Pero no es útil. Obtendrás el texto cuando lo pegues en el bloc de notas, obtendrás el mapa de bits cuando lo pegues en Paint, y la mayoría de las otras aplicaciones escogerán una u otra, pero nunca ambas. Entonces es meramente académico. Algo ordenado, en la forma en que el mal funcionamiento del transportador en Star Trek estaba ordenado. Pero también desordenado.

+1

Esta es la respuesta correcta a esta pregunta. O debe usar RTF o usar el formato interno del portapapeles de MS Office y no sé si está documentado. Incluso Microsoft usa RTF para un ejemplo de pegar una tabla en [HERE] (http://support.microsoft.com/kb/216676). – Hossein

Cuestiones relacionadas