无法在Windows 8.1应用中获取剪贴板的内容

时间:2015-09-29 15:22:31

标签: c# windows-8.1 clipboard

我在Windows 8.1应用中使用 剪贴板 类来获取剪贴板内容的变化。但是当我尝试将内容写入文本框时,我得到了这个:

剪贴板现在包含:System .__ ComObject

这是我的代码:

private void Grid_Loaded(object sender, RoutedEventArgs e)
        {
            Clipboard.ContentChanged += Clipboard_ContentChanged;
        }

        private void Clipboard_ContentChanged(object sender, object e)
        {
            textBox.Text = "clipboard now contains: " + Clipboard.GetContent().GetTextAsync();
        }

我想获取使用GetContent()。GetTextAsync()方法复制到剪贴板的字符串,但我不知道为什么它会返回 System .__ ComObject。 提前谢谢

1 个答案:

答案 0 :(得分:3)

GetTextAsync()是一种异步方法,因此必须等待。如果您没有等待它,您将只获得IAsyncOperation的实例,因为这是它的返回类型。

您需要阅读async / await以了解详细信息(this是一个很好的起点),但要回答您的问题,请将您的事件处理程序更改为以下内容:

private async void Clipboard_ContentChanged(object sender, object e)
{
    textBox.Text = "clipboard now contains: " + await Clipboard.GetContent().GetTextAsync();
}

请注意方法声明中的async关键字,表示这是一个异步方法(您只能等待异步方法中的异步方法),而await关键字只需将IAsyncOperation转换为字符串值即可。操作完成。