剪贴板
本文介绍如何使用 .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.");
以下代码示例展示如何使用按钮读取剪贴板数据。 代码首先检查剪贴板是否具有数据、读取该数据,然后使用具有 SetTextAsync 的 null
值清除剪贴板:
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();
}