Maui 剪贴板

[删除(380066935@qq.com或微信通知)]

更好的阅读体验请查看原文:https://learn.microsoft.com/zh-cn/dotnet/maui/platform-integration/data/clipboard?view=net-maui-7.0

本文介绍如何使用 .NET 多平台应用 UI (.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.");

下面的代码示例演示如何使用按钮读取剪贴板数据。 代码首先检查剪贴板是否包含数据,读取该数据,然后使用 nullSetTextAsync 来清除剪贴板:

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