Text Editor - RichTextBox Fragen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Reboot.

    Text Editor - RichTextBox Fragen

    Hallo liebe VB-Paradise Community!

    Ich versuche mich momentan an einen TextEditor, jedoch funktioniert das Öffnen der Dateien nicht so wie erwartet.. Immer wenn ich eine Datei öffnen will, schmiert mir das Programm ab.
    Außerdem habe ich noch ein kleines Problem, nämlich das markieren des Textes und wenn ich zentriert ausgewählt habe und Leertaste drücke, dass es am Anfang des Textes springt.
    Zudem würde ich gerne wissen, wie ich bestimmte Texte hervorheben kann.

    Ich bedanke mich schoneinmal für jede Antwort! ;)

    Hier der Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub NeuToolStripButton_Click(sender As Object, e As EventArgs) Handles NeuToolStripButton.Click
    3. RichTextBox1.Clear()
    4. End Sub
    5. Private Sub ÖffnenToolStripButton_Click(sender As Object, e As EventArgs) Handles ÖffnenToolStripButton.Click
    6. With OpenFileDialog1
    7. .Filter = "Rich Text Format(*.rtf)|*.rtf|Text Datei(*.txt)|*.txt|Internet(*.htm, *.html, *.xml)|*.htm, *.html, *.xml|Alle Dateien(*.*)|*.*"
    8. .Title = "Datei Öffnen"
    9. .FileName = ""
    10. End With
    11. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    12. RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.RichText)
    13. End If
    14. End Sub
    15. Private Sub SpeichernToolStripButton_Click(sender As Object, e As EventArgs) Handles SpeichernToolStripButton.Click
    16. With SaveFileDialog1
    17. .Filter = "Rich Text Format(*.rtf)|*.rtf|Text Datei(*.txt)|*.txt|HTML Datei(*.html)|*.html|Alle Dateien(*.*)|*.*"
    18. .Title = "Datei Speichern unter"
    19. .FileName = ""
    20. End With
    21. If SaveFileDialog1.Filter = "*.rtf" Then
    22. If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    23. Dim text As String = RichTextBox1.Rtf
    24. System.IO.File.WriteAllText(SaveFileDialog1.FileName, text)
    25. End If
    26. Else
    27. If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    28. Dim text As String = RichTextBox1.Text
    29. System.IO.File.WriteAllText(SaveFileDialog1.FileName, text)
    30. End If
    31. End If
    32. End Sub
    33. Private Sub AusschneidenToolStripButton_Click(sender As Object, e As EventArgs) Handles AusschneidenToolStripButton.Click
    34. RichTextBox1.Cut()
    35. End Sub
    36. Private Sub KopierenToolStripButton_Click(sender As Object, e As EventArgs) Handles KopierenToolStripButton.Click
    37. RichTextBox1.Copy()
    38. End Sub
    39. Private Sub EinfügenToolStripButton_Click(sender As Object, e As EventArgs) Handles EinfügenToolStripButton.Click
    40. RichTextBox1.Paste()
    41. End Sub
    42. Private Sub HilfeToolStripButton_Click(sender As Object, e As EventArgs) Handles HilfeToolStripButton.Click
    43. MsgBox("T€xt-Editor Version: 1.0", MsgBoxStyle.Information, "T€xt-Editor Hilfe")
    44. End Sub
    45. Private Sub SchriftartToolStripButton_Click(sender As Object, e As EventArgs) Handles SchriftartToolStripButton.Click
    46. FontDialog1.ShowDialog()
    47. RichTextBox1.SelectionFont = FontDialog1.Font
    48. End Sub
    49. Private Sub TextFarbeToolStripButton_Click(sender As Object, e As EventArgs) Handles TextFarbeToolStripButton.Click
    50. ColorDialog1.ShowDialog()
    51. RichTextBox1.SelectionColor = ColorDialog1.Color
    52. End Sub
    53. Private Sub RückgängigToolStripButton_Click(sender As Object, e As EventArgs) Handles RückgängigToolStripButton.Click
    54. RichTextBox1.Undo()
    55. End Sub
    56. Private Sub WiederholenToolStripButton_Click(sender As Object, e As EventArgs) Handles WiederholenToolStripButton.Click
    57. RichTextBox1.Redo()
    58. End Sub
    59. Private Sub LinksbündigToolStripButton_Click(sender As Object, e As EventArgs) Handles LinksbündigToolStripButton.Click
    60. RichTextBox1.SelectionAlignment = HorizontalAlignment.Left
    61. End Sub
    62. Private Sub ZentriertToolStripButton_Click(sender As Object, e As EventArgs) Handles ZentriertToolStripButton.Click
    63. RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
    64. End Sub
    65. Private Sub RechtsbündigToolStripButton_Click(sender As Object, e As EventArgs) Handles RechtsbündigToolStripButton.Click
    66. RichTextBox1.SelectionAlignment = HorizontalAlignment.Right
    67. End Sub
    68. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    69. RichTextBox1.SelectionAlignment = HorizontalAlignment.Left
    70. End Sub
    71. End Class

    VB.NET-Quellcode

    1. ​If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    2. RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.RichText)
    3. End If
    Kommt ein Fehlermeldung wenn das Programm abstürzt?

    VB.NET-Quellcode

    1. If SaveFileDialog1.Filter = "*.rtf" Then
    2. If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    3. Dim text As String = RichTextBox1.Rtf
    4. System.IO.File.WriteAllText(SaveFileDialog1.FileName, text)
    5. End If
    Das würde Ich durch RichTextBox1.SaveFile ersetzen, da du sonst den Plaintext und nicht das RTF speicherst.

    LG
    Hi

    ichduersie schrieb:

    Das würde Ich durch RichTextBox1.SaveFile ersetzen, da du sonst den Plaintext und nicht das RTF speicherst.

    Nope, er schreibt ja RichTextBox.Rtf und nicht RichTextBox.Text. ;) Wäre aber wohl trotzdem sinnvoll.

    Das Einlesen sollte wohl in Abhängigkeit des gewählten Formats passieren, oder? Html, etc. sind nicht im RichTextFormat kodiert.

    Viele Grüße
    ~blaze~
    Ja, das sollte es ;) Jedoch habe ich keine Ahnung wie ich das machen soll.. Naja, ich danke euch aufjedenfall bei der Hilfe. Es funktionert jetzt ^^
    Vier Fragen hätte ich noch zum RichTextBox Control. Wie kann ich das machen, das eine Zeile wie im Windows Notepad vollgeschrieben werden kann? Bei mir ist es nämlich so, wenn ich eine Zeile voll schreibe, dass die nächste Angefangen wird :/ Und wie kann ich die Dokumente im abgespeicherten Format drucken lassen? Einfach ein PrintDialog zu benutzen und der RichTextBox zu zuweisen funktioniert ja nicht ;) Muss ich da vielleicht auch noch die Print Document Control verwenden? Und wie kann ich das so machen, dass man alle Buchstaben einzeln makieren kann? Bei mir markiert der entweder das einzelne Wort oder die ganze Zeile. So, ich habe drei Buttons gemacht, einmal für Bold, Italic und Underline. Bin schon alle Eigenschaften der RichTextBox runtergerattert, die mir IntelliSense gegeben hatte, jedoch ohne Erfolg. Im Internet habe ich auch geschaut aber nur was aus dem jahre 2004-2006 was gefunden..

    Habe zudem auch das hier mit Bold etc. ausprobiert, jedoch sagt mir IntelliSense, dass diese Eigenschaft nur ReadOnly ist..

    VB.NET-Quellcode

    1. RichTextBox1.SelectionFont.Italic = True
    2. RichTextBox1.SelectionFont.Underline = True
    3. RichTextBox1.SelectionFont.Bold = True


    Ich bedanke mich auch schonmal für die Antworten auf diese Fragen ;)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Reboot“ ()

    Reboot schrieb:

    ReadOnly
    Du musst der Selektion einen neuen Font zuweisen:

    VB.NET-Quellcode

    1. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold)
    2. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Italic)
    3. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Underline)
    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!
    Achso ok Danke! :)

    Wie kann ich die Dokumente im abgespeicherten Format drucken lassen?
    Und wie kann ich das so machen, dass man alle Buchstaben einzeln makieren kann? Bei mir markiert der entweder das einzelne Wort oder die ganze Zeile.
    Wäre echt nett, wenn ihr mir die beiden auch beantwortet (Die anderen haben sich von selber gelöst oder durch Rod ;) )

    So sieht mein jetziger Code aus:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Saved, Underline, Bold, Italic As Boolean
    3. Private Sub NeuToolStripButton_Click(sender As Object, e As EventArgs) Handles NeuToolStripButton.Click
    4. If Saved = False Then
    5. If RichTextBox1.TextLength = 0 Then
    6. Else
    7. Dim Response As MsgBoxResult
    8. Response = MsgBox("Wollen Sie die Datei zuvor speichern?", MsgBoxStyle.YesNoCancel, "T€xt-Editor")
    9. If Response = MsgBoxResult.Yes Then
    10. With SaveFileDialog1
    11. .Filter = "Rich Text Format(*.rtf)|*.rtf|Text Datei(*.txt)|*.txt|Alle Dateien(*.*)|*.*"
    12. .Title = "Datei Speichern unter"
    13. .FileName = ""
    14. End With
    15. If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    16. RichTextBox1.SaveFile(SaveFileDialog1.FileName)
    17. End If
    18. Saved = True
    19. ElseIf Response = MsgBoxResult.No Then
    20. RichTextBox1.Clear()
    21. Saved = False
    22. ElseIf Response = MsgBoxResult.Cancel Then
    23. End If
    24. End If
    25. ElseIf Saved = True Then
    26. RichTextBox1.Clear()
    27. Saved = False
    28. End If
    29. End Sub
    30. Private Sub ÖffnenToolStripButton_Click(sender As Object, e As EventArgs) Handles ÖffnenToolStripButton.Click
    31. With OpenFileDialog1
    32. .Filter = "Rich Text Format(*.rtf)|*.rtf|Text Datei(*.txt)|*.txt|Alle Dateien(*.*)|*.*"
    33. .Title = "Datei Öffnen"
    34. .FileName = ""
    35. End With
    36. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    37. RichTextBox1.LoadFile(OpenFileDialog1.FileName)
    38. End If
    39. End Sub
    40. Private Sub SpeichernToolStripButton_Click(sender As Object, e As EventArgs) Handles SpeichernToolStripButton.Click
    41. With SaveFileDialog1
    42. .Filter = "Rich Text Format(*.rtf)|*.rtf|Text Datei(*.txt)|*.txt|Alle Dateien(*.*)|*.*"
    43. .Title = "Datei Speichern unter"
    44. .FileName = ""
    45. End With
    46. If SaveFileDialog1.Filter = "*.rtf" Then
    47. If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    48. RichTextBox1.SaveFile(SaveFileDialog1.FileName)
    49. Saved = True
    50. End If
    51. Else
    52. If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    53. RichTextBox1.SaveFile(SaveFileDialog1.FileName)
    54. Saved = True
    55. End If
    56. End If
    57. End Sub
    58. Private Sub AusschneidenToolStripButton_Click(sender As Object, e As EventArgs) Handles AusschneidenToolStripButton.Click
    59. RichTextBox1.Cut()
    60. End Sub
    61. Private Sub KopierenToolStripButton_Click(sender As Object, e As EventArgs) Handles KopierenToolStripButton.Click
    62. RichTextBox1.Copy()
    63. End Sub
    64. Private Sub EinfügenToolStripButton_Click(sender As Object, e As EventArgs) Handles EinfügenToolStripButton.Click
    65. RichTextBox1.Paste()
    66. End Sub
    67. Private Sub InformationToolStripButton_Click(sender As Object, e As EventArgs) Handles InformationToolStripButton.Click
    68. MsgBox("T€xt-Editor Version: 1.0", MsgBoxStyle.Information, "T€xt-Editor Information")
    69. End Sub
    70. Private Sub SchriftartToolStripButton_Click(sender As Object, e As EventArgs) Handles SchriftartToolStripButton.Click
    71. FontDialog1.ShowDialog()
    72. RichTextBox1.SelectionFont = FontDialog1.Font
    73. End Sub
    74. Private Sub TextFarbeToolStripButton_Click(sender As Object, e As EventArgs) Handles TextFarbeToolStripButton.Click
    75. ColorDialog1.ShowDialog()
    76. RichTextBox1.SelectionColor = ColorDialog1.Color
    77. End Sub
    78. Private Sub RückgängigToolStripButton_Click(sender As Object, e As EventArgs) Handles RückgängigToolStripButton.Click
    79. RichTextBox1.Undo()
    80. End Sub
    81. Private Sub WiederholenToolStripButton_Click(sender As Object, e As EventArgs) Handles WiederholenToolStripButton.Click
    82. RichTextBox1.Redo()
    83. End Sub
    84. Private Sub LinksbündigToolStripButton_Click(sender As Object, e As EventArgs) Handles LinksbündigToolStripButton.Click
    85. RichTextBox1.SelectionAlignment = HorizontalAlignment.Left
    86. End Sub
    87. Private Sub ZentriertToolStripButton_Click(sender As Object, e As EventArgs) Handles ZentriertToolStripButton.Click
    88. RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
    89. End Sub
    90. Private Sub RechtsbündigToolStripButton_Click(sender As Object, e As EventArgs) Handles RechtsbündigToolStripButton.Click
    91. RichTextBox1.SelectionAlignment = HorizontalAlignment.Right
    92. End Sub
    93. Private Sub FettToolStripButton_Click(sender As Object, e As EventArgs) Handles FettToolStripButton.Click
    94. If Bold = True Then
    95. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Regular)
    96. Bold = False
    97. ElseIf Bold = False Then
    98. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold)
    99. Bold = True
    100. End If
    101. End Sub
    102. Private Sub KursivToolStripButton_Click(sender As Object, e As EventArgs) Handles KursivToolStripButton.Click
    103. If Italic = True Then
    104. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Regular)
    105. Italic = False
    106. ElseIf Italic = False Then
    107. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Italic)
    108. Italic = True
    109. End If
    110. End Sub
    111. Private Sub UnterstrichenToolStripButton_Click(sender As Object, e As EventArgs) Handles UnterstrichenToolStripButton.Click
    112. If Underline = True Then
    113. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Regular)
    114. Underline = False
    115. ElseIf Underline = False Then
    116. RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Underline)
    117. Underline = True
    118. End If
    119. End Sub
    120. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    121. RichTextBox1.Font = My.Settings.StandartFont
    122. End Sub
    123. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    124. If Saved = False Then
    125. If RichTextBox1.TextLength = 0 Then
    126. Else
    127. Dim Response As MsgBoxResult
    128. Response = MsgBox("Wollen Sie die Datei zuvor speichern?", MsgBoxStyle.YesNoCancel, "T€xt-Editor")
    129. If Response = MsgBoxResult.Yes Then
    130. With SaveFileDialog1
    131. .Filter = "Rich Text Format(*.rtf)|*.rtf|Text Datei(*.txt)|*.txt|Alle Dateien(*.*)|*.*"
    132. .Title = "Datei Speichern unter"
    133. .FileName = ""
    134. End With
    135. If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    136. RichTextBox1.SaveFile(SaveFileDialog1.FileName)
    137. End If
    138. Saved = True
    139. ElseIf Response = MsgBoxResult.No Then
    140. RichTextBox1.Clear()
    141. Saved = False
    142. ElseIf Response = MsgBoxResult.Cancel Then
    143. End If
    144. End If
    145. ElseIf Saved = True Then
    146. RichTextBox1.Clear()
    147. Saved = False
    148. End If
    149. End Sub
    150. End Class


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Reboot“ ()

    Ok danke, ist jedoch in C#.. ^^
    Jetzt habe ich doch noch eine Frage. Ich möchte das so machen, wenn der Benutzer den Filter Batch ausgewählt hat, dass das nicht in der RTF Kodierung gespeichert wird, sondern so, dass es Batch dann ausführen kann.

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

    Reboot schrieb:

    jedoch wurde ich nicht wircklich schlau daraus.
    Woraus jetzt?
    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!