Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何打开pdf等文件”;从「;C语言中的windows窗体应用程序#_Pdf_C# 4.0 - Fatal编程技术网

“如何打开pdf等文件”;从「;C语言中的windows窗体应用程序#

“如何打开pdf等文件”;从「;C语言中的windows窗体应用程序#,pdf,c#-4.0,Pdf,C# 4.0,我想创建一个包含链接标签的windows窗体,这样当用户单击该链接标签时,添加到资源中的某种格式的文件(例如pdf文件或html文件)就会打开。 它不会以表单形式打开,这意味着该文件将使用adobe reader或其他程序在程序外打开。 我该怎么做? 谢谢您可以使用过程来完成。开始: System.Diagnostics.Process.Start(@"C:\myfolder\document.pdf"); 如果文件是嵌入式资源,则首先必须将其解压缩并保存到光盘。无法直接从流打开文档,因为第三

我想创建一个包含链接标签的windows窗体,这样当用户单击该链接标签时,添加到资源中的某种格式的文件(例如pdf文件或html文件)就会打开。 它不会以表单形式打开,这意味着该文件将使用adobe reader或其他程序在程序外打开。 我该怎么做?
谢谢

您可以使用
过程来完成。开始

System.Diagnostics.Process.Start(@"C:\myfolder\document.pdf");
如果文件是嵌入式资源,则首先必须将其解压缩并保存到光盘。无法直接从流打开文档,因为第三方应用程序将无法访问进程的内存:

string resourceName = "test.pdf";
string filename = Path.Combine(Path.GetTempPath(), resourceName);

Assembly asm = typeof(Program).Assembly;
using (Stream stream = asm.GetManifestResourceStream(
    asm.GetName().Name + "." + resourceName))
{
    using (Stream output = new FileStream(filename, 
        FileMode.OpenOrCreate, FileAccess.Write))
    {
        byte[] buffer = new byte[32 * 1024];
        int read;
        while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
        {
            output.Write(buffer, 0, read);
        }
    }
}
Process.Start(filename);

您必须将此文件从资源(我假设这里讨论的是程序集嵌入资源)中提取到
%temp%
,然后将其删除。不过,请确保提取的文件具有正确的扩展名