クリップボード

Browse sample. サンプルを参照する

この記事では、.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.");

次のコード例は、ボタンを使用してクリップボード データを読み取る方法を示しています。 コードは、最初にクリップボードにデータがあるかどうかをチェックし、そのデータを読み取り、次に 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);

クリップボードをクリアする

次のコード例に示すように、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();
}