剪贴板

Browse sample. 浏览示例

本文介绍如何使用 .NET Multi-platform App UI (.NET MAUI) IClipboard 接口。 使用此接口,可以从系统剪贴板复制文本以及将文本粘贴到系统剪贴板。

IClipboard 接口的默认实现通过 Clipboard.Default 属性提供。 IClipboard 接口和 Clipboard 类都包含在 Microsoft.Maui.ApplicationModel.DataTransfer 命名空间中。

提示

必须在主用户界面线程上完成对剪贴板的访问。 有关如何在主用户界面线程上调用方法的详细信息,请参阅主线程

使用 Clipboard

对剪贴板的访问仅限于字符串数据。 可以检查剪贴板是否包含数据、设置或清除数据以及读取数据。 每当剪贴板数据发生更改时,将引发 ClipboardContentChanged 事件。

以下代码示例展示如何使用按钮设置剪贴板数据:

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

以下代码示例展示如何使用按钮读取剪贴板数据。 代码首先检查剪贴板是否具有数据、读取该数据,然后使用具有 SetTextAsyncnull 值清除剪贴板:

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

清除剪贴板

可以通过将 null 传递给 SetTextAsync 方法清除剪贴板,如以下代码示例所示:

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