在我的C#win表单中,我使用OpenFileDialog
为用户选择要保存的文件。当用户指定了像http://www.xyz.com/qdms/MyFile.PDF
这样的url文件时,OpenFileDialog会下载该文件,并从OpenFileDialog.FileName
C:\Documents and Settings\MyName\Local Settings\Temporary Internet Files\Content.IE5\GPIR4TYV\QDMS4[3].PDF
提供下载的文件,并且会花费大量时间。
当用户输入网址路径时,有没有办法让http://www.xyz.com/qdms/MyFile.PDF
为OpenFileDialog.FileName
?
答案 0 :(得分:1)
并且花了很多时间
“挂起”具有明确定义的含义,它发生在程序对用户输入无响应时,通常还会受到绘制工件的影响并且其UI被鬼窗口替换,该窗口中的“未响应”标题栏。
这些都不会发生在OpenFileDialog中。它只是禁用输入,但在下载过程中保持取消按钮可操作。进度条本来不错,但它不是对话框中包含的小部件。没有任何东西可以挂起,用户可以启动Solitair并且当他切换回来时对话框画得很好。如果他厌倦了等待,那么按下取消按钮效果很好。
没有用户会因此而陷入困境。您可以使用FileOk事件在下载开始之前查看所选文件,并显示可能需要一段时间的警告。然而,这并不是非常有用,因为你无法估计它需要多长时间,而且很可能只是用“我知道,我知道,停止告诉我明显的”惊叹号。如果你愿意的话,最好不要在这里帮忙。
答案 1 :(得分:0)
我不相信有。当Windows识别出输入的值是Internet协议地址时,它会将其下载到临时文件夹并使用该文件名在文件对话框中显示/选择。唯一的另一种方法是(和愚蠢的设计)要求用户首先在自定义对话框中输入网址,然后获取该值并存储它。最后,在对话框中设置文件名并打开它...看看是否下载了它。当它发生并且用户点击“OK”时,在打开打开文件对话框之前,取出路径并将文件名替换为用户先前在对话框中输入的文件名。