Portapapeles
En este artículo se describe cómo puedes usar la interfaz IClipboard de .NET Multi-platform App UI (.NET MAUI). Con esta interfaz, puedes copiar y pegar texto en y desde el portapapeles del sistema.
La implementación predeterminada de la interfaz IClipboard
está disponible a través de la propiedad Clipboard.Default. Tanto la interfaz IClipboard
como la clase Clipboard
están contenidas en el espacio de nombres Microsoft.Maui.ApplicationModel.DataTransfer
.
Sugerencia
El acceso al portapapeles debe realizarse en el subproceso de la interfaz de usuario principal. Para obtener más información sobre cómo invocar métodos en el subproceso principal de la interfaz de usuario, consulta MainThread.
Uso de Clipboard
El acceso al portapapeles se limita a los datos de cadena. Puedes comprobar si el portapapeles contiene datos, establecerlos o borrarlos, y leerlos. El evento ClipboardContentChanged se genera cada vez que cambian los datos del portapapeles.
En el ejemplo de código siguiente se muestra como mediante un botón se establecen los datos del portapapeles:
private async void SetClipboardButton_Clicked(object sender, EventArgs e) =>
await Clipboard.Default.SetTextAsync("This text was highlighted in the UI.");
En el ejemplo de código siguiente cómo mediante un botón se leen los datos del portapapeles. El código comprueba primero si el portapapeles tiene datos, lee esos datos y, a continuación, usa un valor null
con SetTextAsync para borrar el portapapeles:
private async void ReadClipboardButton_Clicked(object sender, EventArgs e)
{
if (Clipboard.Default.HasText)
{
ClipboardOutputLabel.Text = await Clipboard.Default.GetTextAsync();
await ClearClipboard();
}
else
ClipboardOutputLabel.Text = "Clipboard is empty";
}
private async Task ClearClipboard() =>
await Clipboard.Default.SetTextAsync(null);
Borrar el portapapeles
Puedes borrar el portapapeles pasando null
al método SetTextAsync, como se muestra en el ejemplo de código siguiente:
private async Task ClearClipboard() =>
await Clipboard.Default.SetTextAsync(null);
Detección de cambios en el portapapeles
La interfaz IClipboard proporciona el evento ClipboardContentChanged. Cuando se genera este evento, el contenido del portapapeles ha cambiado. En el ejemplo de código siguiente se agrega un controlador al evento cuando se carga la página de contenido:
private void ContentPage_Loaded(object sender, EventArgs e)
{
Clipboard.Default.ClipboardContentChanged += Clipboard_ClipboardContentChanged;
}
private async void Clipboard_ClipboardContentChanged(object sender, EventArgs e)
{
ClipboardOutputLabel.Text = await Clipboard.Default.GetTextAsync();
}