Буфер обмена

Browse sample. Обзор примера

В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI). IClipboard С помощью этого интерфейса можно скопировать и вставить текст в системный буфер обмена и из нее.

Реализация интерфейса по умолчанию IClipboard доступна через Clipboard.Default свойство. Интерфейс IClipboard и Clipboard класс содержатся в Microsoft.Maui.ApplicationModel.DataTransfer пространстве имен.

Совет

Доступ к буферу обмена должен выполняться в основном потоке пользовательского интерфейса. Дополнительные сведения о том, как вызывать методы в основном потоке пользовательского интерфейса, см. в разделе MainThread.

Использование Clipboard

Доступ к буферу обмена ограничен строковыми данными. Вы можете проверка, если буфер обмена содержит данные, задает или очищает данные и считывает данные. Событие ClipboardContentChanged возникает при изменении данных буфера обмена.

В следующем примере кода показано использование кнопки для задания данных буфера обмена:

private async void SetClipboardButton_Clicked(object sender, EventArgs e) =>
    await Clipboard.Default.SetTextAsync("This text was highlighted in the UI.");

В следующем примере кода показано использование кнопки для чтения данных буфера обмена. Код сначала проверка, если буфер обмена содержит данные, считывает эти данные, а затем использует null значение для SetTextAsync очистки буфера обмена:

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);

Очистка буфера обмена

Вы можете очистить буфер обмена, передав nullSetTextAsync метод, как показано в следующем примере кода:

private async Task ClearClipboard() =>
    await Clipboard.Default.SetTextAsync(null);

Обнаружение изменений буфера обмена

Интерфейс IClipboard предоставляет ClipboardContentChanged событие. При возникновении этого события содержимое буфера обмена изменилось. Следующий пример кода добавляет обработчик в событие при загрузке страницы содержимого:

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();
}