将流放入剪贴板

时间:2009-12-09 06:50:58

标签: c# stream clipboard

让我们从最终目标开始 -
我需要能够将文件粘贴到本地文件系统中,该文件系统是从Web响应流中获取的。

我认为最好的做法是以某种方式在剪贴板中放置一些内容,以便在粘贴操作发生时通知我,这样我就可以运行异步请求,等待响应,然后将流发送到文件系统。是否有可能做到这样的事情?
如果没有,也许我可以在复制操作上发送请求,获取流(甚至可以将其完全复制到MemoryStream,这样我就可以关闭响应),并以某种方式将其放入剪贴板中以便粘贴只是“溢出”这一切?

这里有人对我有任何建议或指示吗?

3 个答案:

答案 0 :(得分:1)

也许您可以将文件保存到Temp文件夹(Path.GetTempPath()),然后使用常规的Windows复制/粘贴机制(Clipboard.SetFileDropList

答案 1 :(得分:1)

我找到了this个问题,链接到CodeProject文章,解释了我应该做什么。现在试着弄清楚自己。

答案 2 :(得分:0)

此示例将网格内容保存到临时文件,并将所有行加载到剪贴板中,以便将它们粘贴到Excel中:

String filename = Path.Combine(Path.GetTempPath(), "grid.csv");
using (Stream stream = new MemoryStream())
{
    this.Grid.Export(stream,new GridViewExportOptions() {Format = ExportFormat.Csv, ShowColumnHeaders = true});
    stream.Position = 0;
    using (StreamReader r = new StreamReader(stream))
    {
        Clipboard.SetData(DataFormats.CommaSeparatedValue, r.ReadToEnd());
    }
}