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.");
下面的代码示例演示如何使用按钮读取剪贴板数据。 代码首先检查剪贴板是否包含数据,读取该数据,然后使用 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);
清除剪贴板
可以通过传递到 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();
}