2010-07-29 4 views
4

Je veux créer un formulaire Windows contenant un linklable tel que lorsque l'utilisateur clique sur cette linklable, un fichier avec un certain format (par exemple un fichier pdf ou fichier html) qui est ajouté aux ressources, s'ouvre. il ne sera pas ouvert dans la forme, cela signifie que le fichier sera ouvert hors programme avec Adobe Reader ou un autre programme. Comment puis-je faire cela? Mercicomment ouvrir un fichier tel que pdf, etc "à partir d'une application Windows formulaire en C#

Répondre

3

Vous pouvez le faire en utilisant Process.Start:

System.Diagnostics.Process.Start(@"C:\myfolder\document.pdf"); 

Si le fichier est une ressource intégrée, vous devez d'abord l'extraire et l'enregistrer sur le disque. Vous ne pouvez pas ouvrir un document à partir d'un flux directement, parce que les applications tierces ne seront pas en mesure d'accéder à votre processus mémoire:

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); 
5

Vous devez extraire ce fichier à partir des ressources (je suppose que nous parlons ici des ressources intégrées à l'assemblage) à %temp% puis seulement Process.Start(). Assurez-vous que le fichier extrait a l'extension appropriée, cependant.

Questions connexes