pen*_*ate 18 .net c# silverlight-3.0
我正在使用C#开发Silverlight 3应用程序.我想允许用户从Silverlight应用程序下载图像.我正在使用SaveFileDialog来执行文件下载任务.流程就是这样:
我在一个函数中使用以下代码,该函数从OnCompleted事件处理程序调用,以完成SaveFileDialog提示,然后流式传输到文件.
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "JPG Files|*.jpg" + "|All Files|*.*";
bool? dialogResult = dialog.ShowDialog();
if (dialogResult == true)
{
using (Stream fs = (Stream)dialog.OpenFile())
{
fs.Write(e.Result, 0, e.Result.Length);
fs.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
SaveFileDialog会抛出错误"对话必须是用户启动的".在上面的代码中调用ShowDialog方法时.我在这里可以缺少什么?怎么克服这个?
Kei*_*ney 20
此错误消息的含义是您只能显示SaveFileDialog以响应用户启动的事件,例如单击按钮.在您描述的示例中,您没有显示SaveFileDialog以响应单击,而是响应已完成的http请求(不被视为用户启动的事件).因此,要使其工作,您需要做的是,在http请求的Completed事件中,向用户显示一些UI,说"下载已完成,单击此处将文件保存到您的计算机",以及当用户点击时在此消息上,显示SaveFileDialog.
在下载之前先问一下怎么样?它似乎从错误消息中建议,这是Silverlight希望您提示确保它知道用户请求操作的方式,而不是您使用弹出窗口对用户进行spaming.
除了Silverlight安全模型之外,我宁愿不等待下载完成之后再被问到放在哪里!
| 归档时间: |
|
| 查看次数: |
32031 次 |
| 最近记录: |