2016-08-08 39 views
1

Windows Forms auf - VSTO - OutlookC# Windows Forms - Wie programmatisch Bild als Vorschau zum Dateiordner (VSTO 2010)

Hintergrund - Ich erstelle ein digitales Archiv-Add-in für Office, wo Der Benutzer kann die Datenbank nach dem Client durchsuchen (zu dem das Dokument gehört), und die Datei wird je nach Art der Datei in den entsprechenden Ordner gespeichert. Bis jetzt funktioniert das für Word wie geplant, aber ich verwende jetzt Outlook, das mehr zu berücksichtigen hat (Anhänge, Nachrichtentext usw.).

Ich habe es funktioniert so weit, dass die Anhänge in einem temporären Ordner gespeichert werden (die jedes Mal geleert wird, wenn das Windows-Formular schließt) bereit, sortiert zu werden, und ich kann Informationen über Absender/Betreff/E-Mail-Körper erhalten. Die Liste der Anlagen wird aus in eine CheckedListBox

Aktuelles Problem - Wenn ein Benutzer sucht eine Anlage zu archivieren (eine Menge von Dokumenten/gescannten Dokumenten kommen wird), werden die Bilder verwirrend sein, wie sie notwendig sein kann, oder ganz unwichtig, also möchte ich die Bilder in der Vorschau sehen.

Ich versuche es so auf den Fall von

private void chkAttachments_SelectedValueChanged(object sender, EventArgs e) 

Das Bild in picAttachPreview (PictureBox) zeigt zu bekommen als Vorschau dieser Datei. Dies wird das Bild von tempfolder (@"c:\temp\DigitalArchive") nehmen.

Ich verstehe, dass dies falsch ist, aber ich versuche, die Quelle für das Bild auf dem SelectedValueChanged-Ereignis auf dem Bildschirm angezeigt.

Mein [Falsche]-Code -

if(chkAttachments.Text.Contains(".jpg")) 
     { 
      var selectedImage = chkAttachments.SelectedValue.ToString(); 
      picAttachPreview.Image = tempfolder + @"\" + selectedImage; //(A) 
     } 

Die (A) Linie ist die Frage, und obwohl ich verstehe, warum, ich weiß nicht, wie es zu lösen. Der Dateipfad wird mit tempfolder und selectedImage (z. B. ScannedDoc.jpg) erstellt, aber der Dateipfadtyp ist String aber picAttachPreview ist System.Drawing.Image, also nehme ich an, dass ich die falsche Eigenschaft von picAttachPreview die Quelle des Bildes festlegen.

Jede Hilfe oder Anleitung wird sehr geschätzt. Vielen Dank.

(auch wenn Sie von jedem guten Art und Weise weiß, dass ich die gleiche Art von Vorschau für Dokumente festlegen/PDF dann werde ich sehr dankbar sein)

bearbeiten Obwohl der Link Teil meines Problem löst, ist es ein Problem mit chkAttachments.SelectedValue.ToString(), die ich unten beantwortet habe. (Wenn jemand mich auf der Website Etikette für diese Situation beraten kann. Lösche ich die Frage oder lassen Sie es mit der Antwort, die ich gefunden habe, so dass Menschen die Lösung für das gleiche Problem in der Zukunft finden? Vielen Dank)

+0

Mögliche Duplikat [Laden PictureBox Bild aus Ressourcendatei mit Pfad (Teil 3)] (http://stackoverflow.com/questions/17193825/loading-picturebox-image-from-resource-file-with-path-part-3) –

Antwort

0

Nach einigen herumspielen, fand ich ein anderes Problem (chkAttachment.Text funktioniert, während .SelectedValue.ToString() nicht funktioniert.

Auch das Problem mit der Zeichenfolge Bildformat durch das Vorsetzen den Pfad mit Image.FromFile(

So ist die richtige Art und Weise der Änderung des Bildes bei Auswahl behoben ist:

if(chkAttachments.Text.Contains(".jpg")) 
     { 
      var selectedImage = chkAttachments.Text; 
      picAttachPreview.Image = Image.FromFile(tempfolder + @"\" + selectedImage); 
     } 
+2

Sie können auch '' verwenden Path.Combine() 'um Dateiverzeichnis und Name zu verketten, damit .Net sich um Pfadbegrenzer für Sie kümmert:' Path.Combine (tempfolder, selectedImage) ' –

+1

Verwenden Sie nicht' Image.FromFile', sondern 'Image.FromStream'. –