Schowek
W tym artykule opisano sposób używania interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI). IClipboard Za pomocą tego interfejsu można kopiować i wklejać tekst do i ze schowka systemowego.
Domyślna implementacja interfejsu IClipboard
jest dostępna za pośrednictwem Clipboard.Default właściwości . Zarówno interfejs, jak IClipboard
i Clipboard
klasa są zawarte w Microsoft.Maui.ApplicationModel.DataTransfer
przestrzeni nazw.
Napiwek
Dostęp do schowka musi być wykonywany w głównym wątku interfejsu użytkownika. Aby uzyskać więcej informacji na temat wywoływania metod w głównym wątku interfejsu użytkownika, zobacz MainThread.
Korzystanie ze Schowka
Dostęp do schowka jest ograniczony do danych ciągów. Możesz sprawdzić, czy schowek zawiera dane, ustawić lub wyczyścić dane i odczytać dane. Zdarzenie ClipboardContentChanged jest zgłaszane za każdym razem, gdy zmienia się dane schowka.
W poniższym przykładzie kodu pokazano, jak za pomocą przycisku ustawić dane schowka:
private async void SetClipboardButton_Clicked(object sender, EventArgs e) =>
await Clipboard.Default.SetTextAsync("This text was highlighted in the UI.");
W poniższym przykładzie kodu pokazano, jak za pomocą przycisku odczytywać dane schowka. Kod najpierw sprawdza, czy schowek zawiera dane, odczytuje te dane, a następnie używa wartości z SetTextAsync poleceniem null
, aby wyczyścić schowek:
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);
Wyczyść schowek
Schowek można wyczyścić, przekazując null
do SetTextAsync metody, jak pokazano w poniższym przykładzie kodu:
private async Task ClearClipboard() =>
await Clipboard.Default.SetTextAsync(null);
Wykrywanie zmian schowka
Interfejs IClipboard udostępnia ClipboardContentChanged zdarzenie. Po wystąpieniu tego zdarzenia zawartość schowka uległa zmianie. Poniższy przykład kodu dodaje procedurę obsługi do zdarzenia po załadowaniu strony zawartości:
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();
}