Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous apprendrez à utiliser l’interface de l’application multiplateforme .NET (.NET MAUI). Avec cette interface, vous pouvez copier et coller du texte dans et depuis le Presse-papiers système.
L’implémentation par défaut de l’interface IClipboard est disponible via la propriété Clipboard.Default. Les deux, l'interface IClipboard et la classe Clipboard, sont contenus dans l'espace de noms Microsoft.Maui.ApplicationModel.DataTransfer.
Conseil / Astuce
L’accès au Presse-papiers doit être effectué sur le thread d’interface utilisateur principal. Pour plus d’informations sur l’appel de méthodes sur le thread d’interface utilisateur principal, consultez MainThread.
Utilisation du Presse-papiers
L’accès au Presse-papiers est limité aux données de chaîne. Vous pouvez vérifier si le Presse-papiers contient des données, définir ou effacer les données et lire les données. L’événement ClipboardContentChanged est déclenché chaque fois que les données du Presse-papiers changent.
L’exemple de code suivant illustre l’utilisation d’un bouton pour définir les données du Presse-papiers :
private async void SetClipboardButton_Clicked(object sender, EventArgs e) =>
await Clipboard.Default.SetTextAsync("This text was highlighted in the UI.");
L'exemple de code suivant est fourni pour illustrer comment utiliser un bouton afin de lire les données du Presse-papiers. Le code vérifie d’abord si le Presse-papiers contient des données, lit ces données, puis utilise une valeur null avec SetTextAsync pour effacer le Presse-papiers :
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);
Effacer le presse-papiers
Vous pouvez effacer le Presse-papiers en passant null à la méthode SetTextAsync, comme l'illustre l'exemple de code suivant :
private async Task ClearClipboard() =>
await Clipboard.Default.SetTextAsync(null);
Détecter les modifications du presse-papiers
L’interface IClipboard fournit l’événement ClipboardContentChanged . Lorsque cet événement est déclenché, le contenu du Presse-papiers a changé. L’exemple de code suivant ajoute un gestionnaire à l’événement lorsque la page de contenu est chargée :
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();
}
Comportements spécifiques à la plateforme
Notifications Android
À partir d'Android 13 (niveau d'API 33), le système affiche automatiquement une notification toast chaque fois qu'une application copie du texte dans le presse-papiers. Ce comportement fournit aux utilisateurs des commentaires visuels lorsqu’une opération de copie se produit et ne peut pas être désactivée par les applications.
Pour les applications ciblant Android 12 (niveau d’API 32) et inférieures, vous pouvez fournir votre propre notification toast pour créer une expérience utilisateur cohérente entre différentes versions d’Android. L’exemple de code suivant montre comment afficher conditionnellement une notification toast sur les versions antérieures d’Android :
private async void SetClipboardWithToastButton_Clicked(object sender, EventArgs e)
{
await Clipboard.Default.SetTextAsync("TestValue");
#if ANDROID
// Show toast notification only on Android 12 and lower
// Android 13+ automatically shows system notifications
if (Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.Tiramisu)
{
Android.Widget.Toast.MakeText(
Microsoft.Maui.ApplicationModel.Platform.CurrentActivity ?? Android.App.Application.Context,
"Copied to clipboard",
Android.Widget.ToastLength.Short)?.Show();
}
#endif
}
Important
Pour éviter les notifications en double, n’affichez pas de messages toast personnalisés sur Android 13 et versions ultérieures, car le système affiche automatiquement sa propre notification.
Parcourir l'exemple