c# - 如何用记事本打开嵌入的字符串资源?

标签 c# .net embedded-resource shellexecute

我在资源中添加了 help.txt 文件作为文本文件,并且这样做了:

private void helpButton_Click(object sender, MouseEventArgs e)
{
    System.Diagnostics.Process.Start(myProject.Properties.Resources.help);
}

没用,然后我这样试:

private void helpButton_Click(object sender, MouseEventArgs e)
{
    System.Diagnostics.Process.Start(@"help.txt");
}

它也没有用,但是这样就可以了:

private void helpButton_Click(object sender, MouseEventArgs e)
    {
        System.Diagnostics.Process.Start(@"C:\Projects\CourceWork\Resources\help.txt");
    }

问题是我不想处理这个hard core defined path,怎么办?

最佳答案

您似乎想用与.txt 文件关联的默认程序打开一个嵌入式资源,通常是记事本。不幸的是,记事本无法读取嵌入的资源。因此,您需要提取资源并将其作为文件保存在磁盘上,然后使用该文件打开记事本。

var helpFile = Path.Combine(Path.GetTempPath(), "help.txt");
File.WriteAllText(helpFile, myProject.Properties.Resources.help);
Process.Start(helpFile);

或者,您可以创建自己的显示文本的 Form,在我看来,这是一个更好的解决方案(除非您的帮助文件不容易显示,例如 PDF 文件)。

关于c# - 如何用记事本打开嵌入的字符串资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12899567/

相关文章:

c# - 如何在 Windows Phone 中旋转相机查看器?

c# - LINQ -> XML 处理不存在的元素节点

c# - 是否可以记录程序执行期间抛出的所有异常?

c# - Xamarin HTTPClient 突然没有 GET/POSTing

c# - WPF多个按钮,点击功能相同但参数不同

C# - MessageBox - 资源和换行符中的消息本地化

c# - 套接字异常(0x80004005): An existing connection was forcibly closed by the remote host

c# - 确保实现接口(interface)时通过属性未经验证

java - 使用 Launch4j 从 .jar 编译为 .exe 时无法访问资源文件夹

c# - GetManifestResourceStream 返回 NULL