Eingefärbte Schrift mit Speichern

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von user2100.

    Eingefärbte Schrift mit Speichern

    hi,
    Ich habe eine frage, Also wenn ich in eine Richtextbox einen text reinschreibe möchte ich ihn gerne rot einfärben.
    das ganze soll aber mit abgespeichert werden.das funktioniert bisher nicht.
    ich kann zwar den text rot einfärben aber wenn ich es abspeichere und dann wieder öffne ist der text in meinem programm wieder schwarz.

    wie bekomme ich es hin das der text beim anzeigen im programm weiterhin rot eingefärbt ist?

    Code von Checkbox: (text einfärben)

    VB.NET-Quellcode

    1. If CheckBox1.Checked = True Then
    2. RichTextBox1.Font = New System.Drawing.Font(RichTextBox1.Text, 9, FontStyle.Bold)
    3. RichTextBox1.ForeColor = Color.Red
    4. End If


    Text speichern:

    VB.NET-Quellcode

    1. Ereignis = RichTextBox1.Text
    2. My.Computer.FileSystem.WriteAllText("C:\Downloads\" & Datum & ".txt", Ereignis & " " & vbNewLine, True)
    3. RichTextBox1.Text = ""


    wie schon geschrieben wird der text abgespeichert sobald ich nen button anklicke.aber leider nur schwarz ohne jegliche einfärbung.

    danke im vorraus für die Hilfe

    mfg user2100 :)

    VB.NET-Quellcode

    1. System.IO.File.WriteAllText("C:\guttenberger_copy_paste.rtf", RichTextBox.RTF)
    oder direkt:

    VB.NET-Quellcode

    1. RichTextBox1.SaveFile(DEINE_DATEI, RichTextBoxStreamType.RichText)
    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!
    danke das funktioniert super. aber wenn ich mehrere sachen schreibe dann wird der 1. text gelöscht. wie bekomme ich es hin das wenn ich einen satz stehen habe in der datei und schreibe nen 2. satz das der dann in die datei hinzu gefügt wird ohne das der vorherige text gelöscht wird?
    mfg chris :)
    So etwas wie Append gibt es im RichFileFormat nicht. Du musst entweder eine neue Datei anlegen oder den Inhalt einer gelesenen Datei Deiner RichTextBox anhängen.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim FileName As String = ""
    3. Using dlg As New SaveFileDialog
    4. dlg.Filter = "Rich Text Files(*.rtf)|*.rtf"
    5. If (dlg.ShowDialog() <> DialogResult.OK) Then ' der testet, ob es die Datei schon gibt.
    6. Return
    7. End If
    8. RichTextBox1.SaveFile(dlg.FileName, RichTextBoxStreamType.RichText)
    9. End Using
    10. End Sub
    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!
    Klar kann man in einer Textbox farbige Schrift anzeigen lassen, aber immer nur eine zur Zeit.
    Eine TextBox hat einen Font, den kannst Du Dir zurechtbasteln und er gilt für die gesamte TextBox.
    Wenn Du Text darstellen willst, in dem mehrere Fonts vorkommen sollen, brauchst Du eine RTB.
    Du kannst auch den Inhalt von 2 RTBs zusammenführen:

    VB.NET-Quellcode

    1. RichTextBox1.SelectionLength = 0
    2. RichTextBox1.SelectedRtf = RichTextBox2.SelectedRtf
    fügt den markierten Text der RTB2 an der Cursorposition der RTB1 ein
    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!
    also soweit funktioniert alles ganz gut. wenn ich den text in rtb1 mit hilfe ner checkbox rot färbe funktioniert das soweit auch das ich dann die rote schrift mit speichere und später wieder anzeigen lassse.
    das einzige problem was ich jetzt noch habe, ist das wenn ich einen satz abspeichere und dan zusätzlich einen 2. satz abspeichern will in der gleichen datei, dann funktioniert das nicht es wird lediglich
    der vorherige satz gelöscht und der neue satz wird dann in der gleichen datei abgespeichert.

    wie bekomme ich es hin das ich auch mehrere sätze untereinander abspeichern kann ohne das ein satz aus vorheriger abspeicherung verloren geht?

    mfg chris :)
    Du hast 2 Probleme.
    1. Anhängen von Texten an eine bestehende Datei:

    VB.NET-Quellcode

    1. Dim txt As String = "khlh"
    2. Using sr As New IO.StreamWriter(DEINE_DATEI, True)
    3. sr.Write(txt)
    4. End Using
    5. End Sub
    hängt den Text "khlh" an die bestehende Datei an.
    2. Anhängen von formatiertem RichText an eine RTF-Datei.
    Hierzu verweise ich Dich an Post 13 von mir, denn das RichTextFormat ist nicht einfach so anhängbar.
    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!
    Wenn Du die ganzen Beiträge gelesen und hoffentlich verstanden hast, beschreib doch bitte Dein Problem noch einmal.
    Ich kann es nämlich jetzt nicht mehr nachvollziehen.
    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!

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. RichTextBox1.SelectionLength = 0
    2. RichTextBox1.SelectedRtf = RichTextBox2.SelectedRtf
    Ich kann es zwar gerade nicht testen, aber das sieht mir nicht danach aus, dass es am Ende eingefügt wird. Vielleicht sollte man die SelectionPosition(?) noch ans Ende, des Textes setzen.

    Habe gerade in wikipedia RTF nachgeschlagen und der Syntax soll wie folgt sein :

    Quellcode

    1. {\rtf1
    2. Guten Tag!
    3. \par
    4. {\i Dies} ist ein
    5. formatierter {\b Text}.
    6. \par
    7. Das Ende.
    8. }
    Also ist am Ende die Klammer wichtig.

    Wenn ich also den 1. rtf-Text nehme und dort einen 2. an der vorletzten Stelle einfüge ohne die RTF-Klammern dann sollte es funktionieren.
    Wer lesen kann, hat echt Vorteile.
    eine Form, 1 Button, 2 RichTextBoxen
    RTB2: Font "Modern Nr. 20", ForeColor Rot
    -------------------------

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. RichTextBox1.SelectionLength = 0
    3. RichTextBox1.SelectedRtf = RichTextBox2.SelectedRtf
    4. End Sub

    Start
    Text in RTB1 "jaf jafg lj"
    Text in RTB2 "XVHäölzkdäöt" (rot, anderer Font)
    Text in RTB2 markieren
    in RTB1 reinklicken
    Auf Button drücken
    Oh welch Zauber
    Bilder
    • vorher.jpg

      8,91 kB, 300×300, 93 mal angesehen
    • nachher.jpg

      10,26 kB, 300×300, 90 mal angesehen
    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!