以编程方式在默认Internet浏览器中加载文件

时间:2013-09-02 14:47:44

标签: c# winforms

我用它从Resources

加载文件(html_file.html)
//string myFile = "C:\\Users\\...\\Resources\\html_file.html";      // this works
var myFile = Path.GetFullPath("html_file.html");            // this doesn't works

//myFile = myFile.ToString();
//myFile = myFile.Replace(@"\", @"\\");
//MessageBox.Show(myFile);  

try
{
    Process.Start(myFile);
}
catch (Win32Exception noBrowser)
{
    if (noBrowser.ErrorCode == -2147467259)
        MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
    MessageBox.Show(other.Message);
}

有人可以告诉我出了什么问题吗?

编辑:这有效

Build Action = Embedded ResourceCopy to Output Directory = Copy always

string myFile = @".\Resources\html_file.html";

但我仍然需要在文件中包含路径Resources。有没有办法在我的.EXE文件中包含'html_file'?

2 个答案:

答案 0 :(得分:4)

很明显它无法在当前目录中找到该文件。确保以下内容正确无误:

  • 该文件包含在您的项目中,其Copy to Output Directory属性设置为Copy alwaysCopy if newer

  • 使用Application.StartupPath确保您指向正确的目录,因此第一行将成为:

代码:

var myFile = Path.Combine(Application.StartupPath, "html_file.html"); 

答案 1 :(得分:1)

在第一种方法中,您可以指定文件的确切路径 在第二个中,您要求框架创建一个完整路径。 框架需要从某个地方开始,它选择从当前目录开始,但文件不存在