2010-08-17 18 views
2

J'ai été googling en vain pendant des heures, et n'arrive pas à trouver un moyen d'afficher un fichier rtf dans un formulaire WPF powershell.Comment afficher un fichier RTF dans WPF avec Powershell?

je peux obtenir le fichier rtf en utilisant:

$myContent = gc c:\myContent.rtf 

mais lorsque je tente de l'afficher à l'aide:

$RichTextBox.appendText($myContent) 

-je obtenir le rtf encodée, pas le contenu correctement formaté.

Quelqu'un a un moyen de le faire? Des tas d'exemples sur la façon de faire cela en C#, mais aucun pour PowerShell.

Merci,

Ben

Répondre

2

.AppendText fonctionne uniquement avec des chaînes, pas RTF brut. RTF est une séquence de codes de contrôle mélangés avec du texte brut. Vous devez utiliser une autre méthode pour l'analyser:

$stream = new-object IO.MemoryStream (` 
     [Text.ASCIIEncoding]::Default.GetBytes($myContent)) 
$RichTextBox.Selection.Load($stream, [Windows.DataFormats]::Rtf) 

Hope this helps,

-Oisin

+0

pense que je suis brûles, mais obtenir cette erreur lorsque je tente de créer le MemoryStream - New-Object: Vous ne trouvez pas une surcharge pour « MemoryStream » et le nombre d'arguments: « 123 ». – Ben

1

OK - alors finalement je suis arrivé que cela fonctionne avec quelques ajustements du poste de Oisin.

marquera son comme la réponse « correcte », comme je ne l'aurais pas obtenu ici sans lui, mais pensé que je poste mon code au cas où il aide quelqu'un à l'avenir:

$myContent = gc "c:\myContent.rtf" 
$ascii = (new-Object System.Text.ASCIIEncoding).getbytes($myContent) 
$stream = new-Object System.IO.MemoryStream($ascii,$false) 
$RichTextBox.Selection.Load($stream, [Windows.DataFormats]::Rtf) 

Cheers,

Ben

+0

désolé, oui, je l'ai probablement cassé en essayant de le mettre en forme mieux à lire. Le backtick "' "est un caractère de continuation de ligne, comme le trait de soulignement de VB" _ " – x0n