Utilizar C# sin la referencia Windows Forms complica las cosas, porque sin esta te obliga a "reinventar la rueda". tiene grandes funcionalidades para los formularios y la falta de este causa que las creemos desde cero. afortunadamente para las aplicaciones uwp existe Windows.ApplicationModel.DataTransfer que nos ayuda con Clipboard.

$ads={1}

Copiar texto al portapapeles

Agregar contenido al portapapeles desde una variable.

using Windows.ApplicationModel.DataTransfer; public void InputClipboardText(string text) { DataPackage dataPackage = new DataPackage(); dataPackage.RequestedOperation = DataPackageOperation.Copy; dataPackage.SetText(text); Clipboard.SetContent(dataPackage); }code-box

Simplificado

using Windows.ApplicationModel.DataTransfer; public void InputClipboardText(string text) { DataPackage dataPackage = new DataPackage { RequestedOperation = DataPackageOperation.Copy }; dataPackage.SetText(text); Clipboard.SetContent(dataPackage); }code-box

Pegar texto desde el portapapeles:

Agregar contenido del Portapapeles 📋 a una variable con C# para la Plataforma universal de Windows.

using Windows.ApplicationModel.DataTransfer;
async void OutputClipboardText()
{
    DataPackageView dataPackageView = Clipboard.GetContent();
    if (dataPackageView.Contains(StandardDataFormats.Text))
    {
        string text = await dataPackageView.GetTextAsync();
        TxtUrl.Text = "Clipboard now contains: " + text;
    }
}code-box

Debo comentar que intente hacer un return al texto pero no funciono, segun entendi las funciones asíncronas con await no pueden retornar valores acá un poco más de información.

Actualizado

Ya funciona con return

public static async Task<string> OutputClipboardText() {DataPackageView dataPackageView = Clipboard.GetContent(); if (dataPackageView.Contains(StandardDataFormats.Text)) { string text = await dataPackageView.GetTextAsync(); return text; } return await Task.FromResult(String.Empty); }code-box

Para llamar las funciones puedes agregarlo en un botón, funciones, eventos, etc.

//Copia el texto del portapaleles y lo guarda OutputClipboardText(); //Texto a añadir al portapapeles InputClipboardText("Texto a añadir al portapapeles"); code-box

Agradecimientos a morphological por mostrar la referencia y explicarlo para uwp y un poco mas de info de parte de docs de Microsoft.

Por si te interesa aquí te dejo el proyecto en aplicación UWP para Windows 10 en GitHub 

Post a Comment

Artículo Anterior Artículo Siguiente