RichtextBox Source beim Laden zuweisen

  • WPF

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Andromeda.

    RichtextBox Source beim Laden zuweisen

    gegeben sind eine RichTextBox und ein RTF Dokument im Projekt
    Beim Laden des Fensters soll das RTF Dokument in die RichtextBox geladen werden. Bisher habe ich das Laden durch einen openFile Dialog gemacht.

    Wie lade ich das RTF in die RichTextBox z.B. einer Source?
    kannst du ein Code-Beispiel zeigen, wie du es bisher mit openFileDialog gemacht hast?

    Ohne OFD gehts nämlich genau so.

    Zum Codebeispiel beachte




    ups -sorry - wpf nicht gesehen.
    Da weiß ich nicht genau. Vermutlich sollte es am besten per Databinding laufen, aber zusätzlich hat wpf glaub ein spezielles Document-Konzept.
    vlt. wäre eine testanwendung anzuhängen da nu erst recht eine gute Idee.
    @ErfinderDesRades Jou.
    @Thomas2705 Der OFD lädt nicht eine Datei irgendwohin, der OFD hilft Dir bei der "manuellen" Auswahl einer Datei.
    Irgendwo in Deinem Code muss ja eine Verbindung bestehen zwischen OFD und RTB. Sieh die Dir gaaaaaaaaaanz genau an und löse Deine Aufgabe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich kann dummerweise mit EUren Antworten nicht wirklich etwas anfangen.
    Mein ofd Dialog sieht so aus:

    VB.NET-Quellcode

    1. Dim dlg As New OpenFileDialog()
    2. 'Pfad des Desktops auslesen und an InitialDirectory übergeben
    3. Dim WshShell As Object
    4. WshShell = CreateObject("WScript.Shell")
    5. Dim Pfad = WshShell.SpecialFolders("Desktop")
    6. WshShell = Nothing
    7. dlg.InitialDirectory = Pfad
    8. dlg.Filter = "Rich Text Format (*.rtf)|*.rtf|All files (*.*)|*.*"
    9. dlg.Multiselect = True
    10. If dlg.ShowDialog Then
    11. Dim fileStream As New IO.FileStream(dlg.FileName, FileMode.Open)
    12. Dim sFullName As String = dlg.FileName
    13. 'Dateierweiterung extrahieren
    14. Dim sExt As String = IO.Path.GetExtension(sFullName)
    15. If sExt < ".rtf" Then
    16. MessageBox.Show("Es wurde keine rtf Datei ausgewählt.", "CLIENTVISION", MessageBoxButton.OK, MessageBoxImage.Warning)
    17. End If
    18. If sExt = ".rtf" Then
    19. Dim range As New TextRange(content.Document.ContentStart, content.Document.ContentEnd)
    20. range.Load(fileStream, DataFormats.Rtf)
    21. End If
    22. End If


    So siehts jetzt aus aber es gefällt mir nicht so richtig:

    VB.NET-Quellcode

    1. Dim FileName = "C:\Users\Thomas Stump\Desktop\rtf_Dok.rtf"
    2. Dim fileStream As New IO.FileStream(FileName, FileMode.Open)
    3. Dim range As New TextRange(RichTextBox1.Document.ContentStart, RichTextBox1.Document.ContentEnd)
    4. range.Load(fileStream, DataFormats.Rtf)


    Hier ist das Dokument auf dem Desktop. Wenn sich das Dok allerdings im Projekt befindet; wie finde ich dann den entsprechenden Pfaf?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thomas2705“ ()

    Thomas2705 schrieb:

    Hier ist das Dokument auf dem Desktop. Wenn sich das Dok allerdings im Projekt befindet; wie finde ich dann den entsprechenden Pfaf?

    Du könntest die Datei als Resource zufügen.
    Dann kann man einen Uri bilden, der einen relativen Pfad zu dieser Resource darstellt.
    Hat den Vorteil, dassis gültig während der Entwicklung, aber ebenso auch wenn das Proggi beim Kunden ist.

    Nachteil ist dass die Uri-Syntax ziemlich schwer verständlich ist - musste mal feste nach googeln: wpf: Uri Resource

    ah - hier:
    msdn.microsoft.com/de-de/library/aa970069(v=vs.110).aspx

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Möglichkeit über Ressource
    Speichere die Datei ab als .rtf, z.b. richt.rtf
    Dann in irgendeinen Ordner deines Projektes einfügen.
    In den Eigenschaften Buildvorgang Resource
    Dann das Ding in deine Ressource ziehen (Unter My Project Resources.resx)

    Im Code kannst du dann darauf zugreifen:
    Dim s As String = My.Resources.rich (Das .rtf weglassen)

    Das kannst du dann in deine Richtextbox z.B. irgendwie über

    VB.NET-Quellcode

    1. Dim stream As New MemoryStream(ASCIIEncoding.[Default].GetBytes(s))
    2. richTextBox.Selection.Load(stream, DataFormats.Rtf)


    Laden.