Process.Start()的替代方案

我刚刚完成编码文档存储解决方案,我遇到了以下问题。 在UI中,用户可以按下按钮打开文件:

try { Process.Start(file); } catch (Exception ex) { //Error handling code } 

我的问题是,如果用户没有与文件类型相关联的应用程序,则会抛出一个componentmodelexception,并显示一条消息。

我宁愿做的是在那种情况下弹出“打开方式”对话框,是否有方法调用我不见了?

有关使用“打开方式”对话框,请参阅此文章

http://www.codeproject.com/KB/shell/openwith.aspx

我将Process.Start调用放在try语句中,然后在catch中显示“Open With”。

在调用Process.Start之前,您可以检查注册表以查看是否有与该文件类型关联的应用程序。 或者,您可以捕获componentmodelexception并从那里打开open对话框。

不,那里没有。 我认为你目前的方法是最好的。 只需尝试运行程序,然后在出现exception的情况下,由于文件没有关联,打开一个对话框,允许他们选择一个文件来运行程序。

 Process.Start("explorer.exe",file) 

也许值得一试。

解决了我在XP,Vista和7中打开URL的问题