vb net Texteditor

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    vb net Texteditor

    Hallo ihr lieben,

    ich habe mit ChatGTP einen Texteditor programmiert und es geht auch aber nicht, dass ich mit einem Doppelklick auf das Dokument, den Inhalt in die RichTextbox bekomme.

    Mein Code, den ich bisher habe, ist:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Drawing.Text
    3. Public Class Form1
    4. Inherits Form ' Fügt die Form-Klasse hinzu, von der Ihre Klasse erbt
    5. ' Deklaration von Variablen und Initialisierung
    6. Private fontSizes As New List(Of Integer) From {8, 10, 11, 12, 14, 16, 18, 20}
    7. Private selectedColor As Color = Color.Black ' Standardfarbe ist Schwarz
    8. Private autoSaveEnabled As Boolean = False ' Variable für automatisches Speichern
    9. Private lastFilePath As String = "" ' Speichert den zuletzt überwachten Dateipfad
    10. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    11. ' Verknüpfen von Ereignishandlern
    12. AddHandler cmbFontSize.SelectedIndexChanged, AddressOf CmbFontSize_SelectedIndexChanged
    13. AddHandler cmbFontFamily.SelectedIndexChanged, AddressOf CmbFontFamily_SelectedIndexChanged
    14. AddHandler btnBlack.Click, AddressOf ColorButton_Click
    15. AddHandler btnRed.Click, AddressOf ColorButton_Click
    16. AddHandler btnBold.Click, AddressOf BtnBold_Click
    17. AddHandler btnItalic.Click, AddressOf BtnItalic_Click
    18. AddHandler btnUnderline.Click, AddressOf BtnUnderline_Click
    19. AddHandler Me.DoubleClick, AddressOf DesktopDoubleClickHandler
    20. ' Befüllen des Dropdown-Menüs mit den Schriftgrößen
    21. For Each fontSize As Integer In fontSizes
    22. cmbFontSize.Items.Add(fontSize)
    23. Next
    24. ' Festlegen der Standard-Schriftgröße
    25. cmbFontSize.SelectedIndex = 2
    26. ' Laden der installierten Schriftarten in die ComboBox
    27. Dim installedFonts As New InstalledFontCollection()
    28. For Each font As FontFamily In installedFonts.Families
    29. cmbFontFamily.Items.Add(font.Name)
    30. Next
    31. ' Hinzufügen des RichTextBox-Steuerelements
    32. With txtEditor
    33. .Multiline = True
    34. .AllowDrop = True
    35. End With
    36. Me.Controls.Add(txtEditor)
    37. ' Laden der gespeicherten Einstellungen beim Laden des Formulars
    38. LoadSettings()
    39. End Sub
    40. Private Sub LoadFile(filePath As String, fileExtension As String)
    41. Try
    42. If filePath.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then
    43. ' Öffnen als TXT-Datei
    44. txtEditor.LoadFile(filePath, RichTextBoxStreamType.PlainText)
    45. ElseIf filePath.EndsWith(".rtf", StringComparison.OrdinalIgnoreCase) Then
    46. ' Öffnen als RTF-Datei
    47. txtEditor.LoadFile(filePath)
    48. Else
    49. MessageBox.Show("Das Dateiformat wird nicht unterstützt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    50. End If
    51. Catch ex As Exception
    52. MessageBox.Show("Fehler beim Öffnen der Datei: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    53. End Try
    54. End Sub
    55. Private Sub LoadSettings()
    56. ' Laden der zuletzt ausgewählten Schriftgröße aus den gespeicherten Einstellungen, falls gültig
    57. If My.Settings.FontSize >= 0 AndAlso My.Settings.FontSize < fontSizes.Count Then
    58. cmbFontSize.SelectedIndex = My.Settings.FontSize
    59. End If
    60. ' Laden der zuletzt ausgewählten Schriftart aus den gespeicherten Einstellungen, falls gültig
    61. If Not String.IsNullOrEmpty(My.Settings.SelectedFont) AndAlso cmbFontFamily.Items.Contains(My.Settings.SelectedFont) Then
    62. cmbFontFamily.SelectedItem = My.Settings.SelectedFont
    63. End If
    64. ' Laden der zuletzt ausgewählten Farbe aus den gespeicherten Einstellungen
    65. selectedColor = My.Settings.SelectedColor
    66. ' Laden des Status des automatischen Speicherns
    67. autoSaveEnabled = My.Settings.AutoSaveEnabled
    68. AutomatischesSpeichernToolStripMenuItem.Checked = autoSaveEnabled
    69. ' Laden des zuletzt geöffneten Textes aus den gespeicherten Einstellungen, wenn automatisches Speichern aktiviert ist
    70. If autoSaveEnabled AndAlso Not String.IsNullOrEmpty(My.Settings.LastText) Then
    71. txtEditor.Rtf = My.Settings.LastText
    72. End If
    73. End Sub
    74. Private Sub SaveSettings()
    75. ' Speichern der ausgewählten Schriftgröße in den Einstellungen
    76. My.Settings.FontSize = cmbFontSize.SelectedIndex
    77. ' Speichern der ausgewählten Schriftart in den Einstellungen
    78. My.Settings.SelectedFont = cmbFontFamily.SelectedItem.ToString()
    79. ' Speichern der ausgewählten Farbe in den Einstellungen
    80. My.Settings.SelectedColor = selectedColor
    81. ' Speichern des aktuellen Textes in den Einstellungen
    82. My.Settings.LastText = txtEditor.Rtf
    83. ' Speichern des Status des automatischen Speicherns
    84. My.Settings.AutoSaveEnabled = autoSaveEnabled
    85. ' Speichern der Einstellungen
    86. My.Settings.Save()
    87. End Sub
    88. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    89. ' Speichern der Einstellungen beim Schließen des Formulars
    90. SaveSettings()
    91. End Sub
    92. Private Sub CmbFontFamily_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbFontFamily.SelectedIndexChanged
    93. ' Anwenden der ausgewählten Schriftart auf den Text
    94. If cmbFontFamily.SelectedIndex <> -1 Then
    95. Dim fontFamily As String = cmbFontFamily.SelectedItem.ToString()
    96. Dim currentFont As Font = txtEditor.SelectionFont
    97. Dim newFont As New Font(fontFamily, currentFont.Size, currentFont.Style)
    98. txtEditor.SelectionFont = newFont
    99. txtEditor.Focus()
    100. End If
    101. End Sub
    102. Private Sub CmbFontSize_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbFontSize.SelectedIndexChanged
    103. ' Speichern der aktuellen Auswahl
    104. Dim selectionStart As Integer = txtEditor.SelectionStart
    105. Dim selectionLength As Integer = txtEditor.SelectionLength
    106. Dim selectedText As String = txtEditor.SelectedText
    107. Dim originalFont As Font = txtEditor.SelectionFont
    108. Dim originalColor As Color = txtEditor.SelectionColor
    109. ' Ändern der Schriftgröße
    110. Dim selectedSize As Integer = fontSizes(cmbFontSize.SelectedIndex)
    111. txtEditor.SelectionFont = New Font("Arial", selectedSize)
    112. ' Wiederherstellen der vorherigen Auswahl
    113. txtEditor.Select(selectionStart, selectionLength)
    114. txtEditor.SelectedText = selectedText
    115. txtEditor.Select(selectionStart, selectedText.Length)
    116. End Sub
    117. Private Sub ColorButton_Click(sender As Object, e As EventArgs)
    118. Dim btn As Button = DirectCast(sender, Button)
    119. Dim selectionStart As Integer = txtEditor.SelectionStart
    120. Dim selectionLength As Integer = txtEditor.SelectionLength
    121. ' Überprüfen, ob Text ausgewählt ist
    122. If selectionLength > 0 Then
    123. ' Text ist ausgewählt, ändere Farbe des ausgewählten Textes zeichenweise
    124. For i As Integer = selectionStart To selectionStart + selectionLength - 1
    125. txtEditor.SelectionStart = i
    126. txtEditor.SelectionLength = 1
    127. Select Case btn.Name
    128. Case "btnBlack"
    129. txtEditor.SelectionColor = Color.Black
    130. Case "btnRed"
    131. txtEditor.SelectionColor = Color.Red
    132. Case "btnBlue"
    133. txtEditor.SelectionColor = Color.Blue
    134. Case "btnGreen"
    135. txtEditor.SelectionColor = Color.Green
    136. End Select
    137. Next
    138. Else
    139. ' Text ist nicht ausgewählt, ändere Farbe für den gesamten neuen Text
    140. txtEditor.SelectionStart = 0
    141. txtEditor.SelectionLength = txtEditor.Text.Length
    142. Select Case btn.Name
    143. Case "btnBlack"
    144. txtEditor.ForeColor = Color.Black
    145. Case "btnRed"
    146. txtEditor.ForeColor = Color.Red
    147. Case "btnBlue"
    148. txtEditor.SelectionColor = Color.Blue
    149. Case "btnGreen"
    150. txtEditor.SelectionColor = Color.Green
    151. End Select
    152. End If
    153. ' Wiederherstellen der vorherigen Auswahl
    154. txtEditor.Select(selectionStart, selectionLength)
    155. End Sub
    156. Private Sub AutomatischesSpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AutomatischesSpeichernToolStripMenuItem.Click
    157. ' Toggle für automatisches Speichern
    158. autoSaveEnabled = Not autoSaveEnabled
    159. AutomatischesSpeichernToolStripMenuItem.Checked = autoSaveEnabled
    160. ' Wenn das automatische Speichern aktiviert ist, speichern Sie die aktuellen Einstellungen
    161. If autoSaveEnabled = True Then
    162. SaveSettings()
    163. End If
    164. End Sub
    165. Private Sub TxtEditor_DragDrop(sender As Object, e As DragEventArgs) Handles txtEditor.DragDrop
    166. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    167. Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
    168. If files IsNot Nothing AndAlso files.Length > 0 Then
    169. Dim filePath As String = files(0)
    170. Dim fileExtension As String = Path.GetExtension(filePath).ToLower()
    171. If File.Exists(filePath) AndAlso (fileExtension = ".txt" OrElse fileExtension = ".rtf") Then
    172. Try
    173. LoadFile(filePath, fileExtension)
    174. Catch ex As Exception
    175. MessageBox.Show("Fehler beim Laden der Datei: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    176. End Try
    177. Else
    178. MessageBox.Show("Es können nur Text- oder RTF-Dateien akzeptiert werden.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    179. End If
    180. End If
    181. End If
    182. End Sub
    183. Private Sub TxtEditor_TextChanged(sender As Object, e As EventArgs) Handles txtEditor.TextChanged
    184. ' Automatisches Speichern aktivieren, wenn es aktiviert ist und der Text geändert wurde
    185. If autoSaveEnabled Then
    186. SaveSettings()
    187. End If
    188. End Sub
    189. Private Sub BtnBold_Click(sender As Object, e As EventArgs) Handles btnBold.Click
    190. ApplyFontStyle(FontStyle.Bold, selectedColor)
    191. End Sub
    192. Private Sub BtnItalic_Click(sender As Object, e As EventArgs) Handles btnItalic.Click
    193. ApplyFontStyle(FontStyle.Italic, selectedColor)
    194. End Sub
    195. Private Sub BtnUnderline_Click(sender As Object, e As EventArgs) Handles btnUnderline.Click
    196. ApplyFontStyle(FontStyle.Underline, selectedColor)
    197. End Sub
    198. Private Sub ApplyFontStyle(fontStyle As FontStyle, color As Color)
    199. ' Speichern der aktuellen Auswahl
    200. Dim selectionStart As Integer = txtEditor.SelectionStart
    201. Dim selectionLength As Integer = txtEditor.SelectionLength
    202. Dim selectedText As String = txtEditor.SelectedText
    203. Dim originalFont As Font = txtEditor.SelectionFont
    204. Dim originalColor As Color = txtEditor.SelectionColor
    205. ' Anwenden der gewünschten Formatierung
    206. txtEditor.SelectionStart = selectionStart
    207. txtEditor.SelectionLength = selectionLength
    208. txtEditor.SelectionFont = New Font(originalFont, originalFont.Style Or fontStyle)
    209. txtEditor.SelectionColor = color
    210. ' Wiederherstellen der vorherigen Auswahl
    211. txtEditor.Select(selectionStart, selectionLength)
    212. txtEditor.SelectedText = selectedText
    213. txtEditor.Select(selectionStart, selectedText.Length)
    214. End Sub
    215. Private Sub NeuToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuToolStripMenuItem.Click
    216. Dim newForm As New Form1
    217. newForm.Show()
    218. End Sub
    219. Private Sub ÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ÖffnenToolStripMenuItem.Click
    220. OpenFileDialog1.Filter = "RTF-Dateien (*.rtf)|*.rtf|Textdateien (*.txt)|*.txt"
    221. If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
    222. Try
    223. If OpenFileDialog1.FileName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then
    224. ' Öffnen als TXT-Datei
    225. txtEditor.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
    226. ElseIf OpenFileDialog1.FileName.EndsWith(".rtf", StringComparison.OrdinalIgnoreCase) Then
    227. ' Öffnen als RTF-Datei
    228. txtEditor.LoadFile(OpenFileDialog1.FileName)
    229. Else
    230. MessageBox.Show("Das Dateiformat wird nicht unterstützt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    231. End If
    232. Catch ex As Exception
    233. MessageBox.Show("Fehler beim Öffnen der Datei: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    234. End Try
    235. End If
    236. End Sub
    237. Private Sub SpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SpeichernToolStripMenuItem.Click
    238. SaveFileDialog1.Filter = "RTF-Dateien (*.rtf)|*.rtf|Textdateien (*.txt)|*.txt"
    239. If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
    240. Dim filename As String = SaveFileDialog1.FileName
    241. If filename.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then
    242. ' Speichern als TXT-Datei
    243. txtEditor.SaveFile(filename, RichTextBoxStreamType.PlainText)
    244. Else
    245. ' Speichern als RTF-Datei
    246. txtEditor.SaveFile(filename, RichTextBoxStreamType.RichText)
    247. End If
    248. End If
    249. End Sub
    250. Private Sub SpeichernAlsRtf(filename As String)
    251. ' Speichern des RichTextBox-Inhalts im RTF-Format
    252. Dim rtfContent As String = ""
    253. For Each c As Char In txtEditor.Text
    254. Dim fontSize As Single = txtEditor.SelectionFont.Size
    255. rtfContent &= "{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Arial;}}" & vbCrLf
    256. rtfContent &= "{\colortbl ;" & ColorTranslator.ToHtml(txtEditor.SelectionColor) & ";}" & vbCrLf
    257. rtfContent &= "\viewkind4\uc1\pard\cf1\f0\fs" & CInt(fontSize * 2) & " " & c & vbCrLf
    258. Next
    259. File.WriteAllText(filename, rtfContent)
    260. End Sub
    261. Private Sub DruckenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DruckenToolStripMenuItem.Click
    262. Dim printDoc As New Printing.PrintDocument
    263. AddHandler printDoc.PrintPage, AddressOf PrintPageHandler
    264. Dim printDialog As New PrintDialog With {
    265. .Document = printDoc
    266. }
    267. If printDialog.ShowDialog() = DialogResult.OK Then
    268. printDoc.Print()
    269. End If
    270. End Sub
    271. Private Sub PrintPageHandler(sender As Object, e As Printing.PrintPageEventArgs)
    272. Dim printFont As New Font("Arial", 12)
    273. e.Graphics.DrawString(txtEditor.Text, printFont, Brushes.Black, New RectangleF(100, 100, e.MarginBounds.Width, e.MarginBounds.Height))
    274. End Sub
    275. Private Sub DesktopDoubleClickHandler(sender As Object, e As EventArgs)
    276. Dim desktopPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) ' Pfad zum Desktop
    277. Dim selectedFile As String = Path.Combine(desktopPath, "example.txt") ' Beispieldatei auf dem Desktop
    278. If File.Exists(selectedFile) Then
    279. LoadFileToRichTextBox(selectedFile)
    280. End If
    281. End Sub
    282. Private Sub LoadFileToRichTextBox(filePath As String)
    283. ' Dateiinhalt in die RichTextBox laden
    284. If File.Exists(filePath) Then
    285. Dim fileContent As String = File.ReadAllText(filePath)
    286. txtEditor.Rtf = fileContent ' Annahme: Die Datei enthält RTF-formatierten Text
    287. End If
    288. End Sub
    289. End Class


    Kann irgendwer mir sagen, welchen Code ich verwenden muss?

    *Topic verschoben, EXE-Anhang entfernt*
    Wie man mich kontaktieren kann:
    thiemo-melhorn.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Thiemo1991 Mal sehen, ob ich Dich richtig verstanden habe:
    Du doppelklickst auf eine Datei, die auf dem Desktop liegt?
    Wenn ja:
    Weise der Extension dieser Datei Dein Programm als Standardprogramm zu (recher Mausklick auf die Datei => Öffnen mit ...).
    Wenn nein:
    Setze einen Halztepunkt in die Doppelklick-Prozedur und debugge sie:
    Debuggen, Fehler finden und beseitigen
    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!
    Schaffst du es denn die Commandline-Argumente auszulesen? Da ist der Dateinahme der den Start des Programms ausgelöst hat drin, wenn dein Programm so gestartet wird. Befrag dazu deine KI, das sollte dir diese "dumme" KI verraten können. Hab das auch mal mit KI probiert, aber für mehr als Codegenerierung durch SpeechToText taugt das nicht wirklich viel.

    Beispiel: So kann man easy Coden:
    erstelle mit bitte eine C# klasse mit dem namen XReader mit folgenden privaten
    feldern vom Typ float: Hour, Minutes, Seconds. Folgende felder vom typ string name, place. Dazu bitte dann auch public properties mit getter und setter


    Falls dein Programm bereits läuft und du nicht willst das eine weitere Instanz gestartet wird, musst du eine Einzelinstanzanwendung machen.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DTF“ ()

    Wo machst du den Doppelklick? Auf die Datei?
    Das, wo du auf einen Doppelklick reagierst, ist wenn du den Doppelklick auf dem Form machst. Probier das mal aus.

    Wenn du per Doppelklick auf die Datei, diese durch dein Programm öffnen willst, machst du was Rod sagt und gibst ChatGPT das so nochmal durch:
    Ich habe eine Anwendung in VB.NET erstellt. Für den Dateityp .xyz habe ich auf meinem Betriebssystem meine Anwendung als Standardprogramm eingestellt, das diese öffnet. Mit der Methode:

    VB.NET-Quellcode

    1. Private Sub LoadFileToRichTextBox(filePath As String)
    2. ' Dateiinhalt in die RichTextBox laden
    3. If File.Exists(filePath) Then
    4. Dim fileContent As String = File.ReadAllText(filePath)
    5. txtEditor.Rtf = fileContent ' Annahme: Die Datei enthält RTF-formatierten Text
    6. End If
    7. End Sub

    wird der Inhalt der Datei in eine RichTextBox geladen. Rufe in meinem Programm beim Start diese Methode mit dem Pfad der angewählten Datei auf.


    Neben dem Geseier von GPT erhältst du als Antwort dann, was DTF vorschlägt:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. ' Prüfe, ob beim Start des Programms eine Datei als Argument übergeben wurde
    3. If My.Application.CommandLineArgs.Count > 0 Then
    4. ' Wenn ja, rufe LoadFileToRichTextBox mit dem Pfad der übergebenen Datei auf
    5. Dim filePath As String = My.Application.CommandLineArgs(0)
    6. LoadFileToRichTextBox(filePath)
    7. End If
    8. End Sub
    geprüft, ob das hinhaut hab ich nicht.
    Du doppelklickst auf eine Datei, die auf dem Desktop liegt?

    Nicht nur vom Desktop, werden ja Dateien geöffnet.

    Falls dein Programm bereits läuft und du nicht willst das eine weitere Instanz gestartet wird, musst du eine Einzelinstanzanwendung machen.

    Das möchte ich aber.

    Auf die Datei?

    Ja!



    @Haudruferzappeltnoch, deine Codes haben mein Proplem behoben. Danke dafür.

    Beiträge zusammengefügt. ~Thunderbolt



    Irgendwie, obwohl ich die zwei anderen Farben (also, schwarz und rot) wunderbar auswählen kann bzw. anwenden kann, bekomme ich das aber mit den Farben blau und grün nicht hin. ChatGPT kann mir auch nicht wirklich helfen.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Drawing.Text
    3. Public Class Form1
    4. Inherits Form ' Fügt die Form-Klasse hinzu, von der Ihre Klasse erbt
    5. ' Deklaration von Variablen und Initialisierung
    6. Private fontSizes As New List(Of Integer) From {8, 10, 11, 12, 14, 16, 18, 20}
    7. Private selectedColor As Color = Color.Black ' Standardfarbe ist Schwarz
    8. Private autoSaveEnabled As Boolean = False ' Variable für automatisches Speichern
    9. Private lastFilePath As String = "" ' Speichert den zuletzt überwachten Dateipfad
    10. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    11. ' Prüfe, ob beim Start des Programms eine Datei als Argument übergeben wurde
    12. If My.Application.CommandLineArgs.Count > 0 Then
    13. ' Wenn ja, rufe LoadFileToRichTextBox mit dem Pfad der übergebenen Datei auf
    14. Dim filePath As String = My.Application.CommandLineArgs(0)
    15. LoadFileToRichTextBox(filePath)
    16. End If
    17. ' Verknüpfen von Ereignishandlern
    18. AddHandler cmbFontSize.SelectedIndexChanged, AddressOf CmbFontSize_SelectedIndexChanged
    19. AddHandler cmbFontFamily.SelectedIndexChanged, AddressOf CmbFontFamily_SelectedIndexChanged
    20. AddHandler btnBlack.Click, AddressOf ColorButton_Click
    21. AddHandler btnRed.Click, AddressOf ColorButton_Click
    22. AddHandler btnBold.Click, AddressOf BtnBold_Click
    23. AddHandler btnItalic.Click, AddressOf BtnItalic_Click
    24. AddHandler btnUnderline.Click, AddressOf BtnUnderline_Click
    25. AddHandler Me.DoubleClick, AddressOf DesktopDoubleClickHandler
    26. ' Befüllen des Dropdown-Menüs mit den Schriftgrößen
    27. For Each fontSize As Integer In fontSizes
    28. cmbFontSize.Items.Add(fontSize)
    29. Next
    30. ' Festlegen der Standard-Schriftgröße
    31. cmbFontSize.SelectedIndex = 2
    32. ' Laden der installierten Schriftarten in die ComboBox
    33. Dim installedFonts As New InstalledFontCollection()
    34. For Each font As FontFamily In installedFonts.Families
    35. cmbFontFamily.Items.Add(font.Name)
    36. Next
    37. ' Hinzufügen des RichTextBox-Steuerelements
    38. With txtEditor
    39. .Multiline = True
    40. .AllowDrop = True
    41. End With
    42. Me.Controls.Add(txtEditor)
    43. ' Laden der gespeicherten Einstellungen beim Laden des Formulars
    44. LoadSettings()
    45. End Sub
    46. Private Sub LoadFile(filePath As String, fileExtension As String)
    47. Try
    48. If filePath.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then
    49. ' Öffnen als TXT-Datei
    50. txtEditor.LoadFile(filePath, RichTextBoxStreamType.PlainText)
    51. ElseIf filePath.EndsWith(".rtf", StringComparison.OrdinalIgnoreCase) Then
    52. ' Öffnen als RTF-Datei
    53. txtEditor.LoadFile(filePath)
    54. Else
    55. MessageBox.Show("Das Dateiformat wird nicht unterstützt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    56. End If
    57. Catch ex As Exception
    58. MessageBox.Show("Fehler beim Öffnen der Datei: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    59. End Try
    60. End Sub
    61. Private Sub LoadSettings()
    62. ' Laden der zuletzt ausgewählten Schriftgröße aus den gespeicherten Einstellungen, falls gültig
    63. If My.Settings.FontSize >= 0 AndAlso My.Settings.FontSize < fontSizes.Count Then
    64. cmbFontSize.SelectedIndex = My.Settings.FontSize
    65. End If
    66. ' Laden der zuletzt ausgewählten Schriftart aus den gespeicherten Einstellungen, falls gültig
    67. If Not String.IsNullOrEmpty(My.Settings.SelectedFont) AndAlso cmbFontFamily.Items.Contains(My.Settings.SelectedFont) Then
    68. cmbFontFamily.SelectedItem = My.Settings.SelectedFont
    69. End If
    70. ' Laden der zuletzt ausgewählten Farbe aus den gespeicherten Einstellungen
    71. selectedColor = My.Settings.SelectedColor
    72. ' Laden des Status des automatischen Speicherns
    73. autoSaveEnabled = My.Settings.AutoSaveEnabled
    74. AutomatischesSpeichernToolStripMenuItem.Checked = autoSaveEnabled
    75. ' Laden des zuletzt geöffneten Textes aus den gespeicherten Einstellungen, wenn automatisches Speichern aktiviert ist
    76. If autoSaveEnabled AndAlso Not String.IsNullOrEmpty(My.Settings.LastText) Then
    77. txtEditor.Rtf = My.Settings.LastText
    78. End If
    79. End Sub
    80. Private Sub SaveSettings()
    81. ' Speichern der ausgewählten Schriftgröße in den Einstellungen
    82. My.Settings.FontSize = cmbFontSize.SelectedIndex
    83. ' Speichern der ausgewählten Schriftart in den Einstellungen
    84. My.Settings.SelectedFont = cmbFontFamily.SelectedItem.ToString()
    85. ' Speichern der ausgewählten Farbe in den Einstellungen
    86. My.Settings.SelectedColor = selectedColor
    87. ' Speichern des aktuellen Textes in den Einstellungen
    88. My.Settings.LastText = txtEditor.Rtf
    89. ' Speichern des Status des automatischen Speicherns
    90. My.Settings.AutoSaveEnabled = autoSaveEnabled
    91. ' Speichern der Einstellungen
    92. My.Settings.Save()
    93. End Sub
    94. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    95. ' Speichern der Einstellungen beim Schließen des Formulars
    96. SaveSettings()
    97. End Sub
    98. Private Sub CmbFontFamily_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbFontFamily.SelectedIndexChanged
    99. ' Anwenden der ausgewählten Schriftart auf den Text
    100. If cmbFontFamily.SelectedIndex <> -1 Then
    101. Dim fontFamily As String = cmbFontFamily.SelectedItem.ToString()
    102. Dim currentFont As Font = txtEditor.SelectionFont
    103. Dim newFont As New Font(fontFamily, currentFont.Size, currentFont.Style)
    104. txtEditor.SelectionFont = newFont
    105. txtEditor.Focus()
    106. End If
    107. End Sub
    108. Private Sub CmbFontSize_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbFontSize.SelectedIndexChanged
    109. ' Speichern der aktuellen Auswahl
    110. Dim selectionStart As Integer = txtEditor.SelectionStart
    111. Dim selectionLength As Integer = txtEditor.SelectionLength
    112. Dim selectedText As String = txtEditor.SelectedText
    113. Dim originalFont As Font = txtEditor.SelectionFont
    114. Dim originalColor As Color = txtEditor.SelectionColor
    115. ' Ändern der Schriftgröße
    116. Dim selectedSize As Integer = fontSizes(cmbFontSize.SelectedIndex)
    117. txtEditor.SelectionFont = New Font("Arial", selectedSize)
    118. ' Wiederherstellen der vorherigen Auswahl
    119. txtEditor.Select(selectionStart, selectionLength)
    120. txtEditor.SelectedText = selectedText
    121. txtEditor.Select(selectionStart, selectedText.Length)
    122. End Sub
    123. Private Sub ColorButton_Click(sender As Object, e As EventArgs)
    124. Dim btn As Button = DirectCast(sender, Button)
    125. Dim selectionStart As Integer = txtEditor.SelectionStart
    126. Dim selectionLength As Integer = txtEditor.SelectionLength
    127. ' Überprüfen, ob Text ausgewählt ist
    128. If selectionLength > 0 Then
    129. ' Text ist ausgewählt, ändere Farbe des ausgewählten Textes zeichenweise
    130. For i As Integer = selectionStart To selectionStart + selectionLength - 1
    131. txtEditor.SelectionStart = i
    132. txtEditor.SelectionLength = 1
    133. Select Case btn.Name
    134. Case "btnBlack"
    135. txtEditor.SelectionColor = Color.Black
    136. Case "btnRed"
    137. txtEditor.SelectionColor = Color.Red
    138. Case "btnBlue"
    139. txtEditor.SelectionColor = Color.Blue
    140. Case "btnGreen"
    141. txtEditor.SelectionColor = Color.Green
    142. End Select
    143. Next
    144. Else
    145. ' Text ist nicht ausgewählt, ändere Farbe für den gesamten neuen Text
    146. txtEditor.SelectionStart = 0
    147. txtEditor.SelectionLength = txtEditor.Text.Length
    148. Select Case btn.Name
    149. Case "btnBlack"
    150. txtEditor.ForeColor = Color.Black
    151. Case "btnRed"
    152. txtEditor.ForeColor = Color.Red
    153. Case "btnBlue"
    154. txtEditor.SelectionColor = Color.Blue
    155. Case "btnGreen"
    156. txtEditor.SelectionColor = Color.Green
    157. End Select
    158. End If
    159. ' Wiederherstellen der vorherigen Auswahl
    160. txtEditor.Select(selectionStart, selectionLength)
    161. End Sub
    162. Private Sub AutomatischesSpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AutomatischesSpeichernToolStripMenuItem.Click
    163. ' Toggle für automatisches Speichern
    164. autoSaveEnabled = Not autoSaveEnabled
    165. AutomatischesSpeichernToolStripMenuItem.Checked = autoSaveEnabled
    166. ' Wenn das automatische Speichern aktiviert ist, speichern Sie die aktuellen Einstellungen
    167. If autoSaveEnabled = True Then
    168. SaveSettings()
    169. End If
    170. End Sub
    171. Private Sub TxtEditor_DragDrop(sender As Object, e As DragEventArgs) Handles txtEditor.DragDrop
    172. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    173. Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
    174. If files IsNot Nothing AndAlso files.Length > 0 Then
    175. Dim filePath As String = files(0)
    176. Dim fileExtension As String = Path.GetExtension(filePath).ToLower()
    177. If File.Exists(filePath) AndAlso (fileExtension = ".txt" OrElse fileExtension = ".rtf") Then
    178. Try
    179. LoadFile(filePath, fileExtension)
    180. Catch ex As Exception
    181. MessageBox.Show("Fehler beim Laden der Datei: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    182. End Try
    183. Else
    184. MessageBox.Show("Es können nur Text- oder RTF-Dateien akzeptiert werden.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    185. End If
    186. End If
    187. End If
    188. End Sub
    189. Private Sub TxtEditor_TextChanged(sender As Object, e As EventArgs) Handles txtEditor.TextChanged
    190. ' Automatisches Speichern aktivieren, wenn es aktiviert ist und der Text geändert wurde
    191. If autoSaveEnabled Then
    192. SaveSettings()
    193. End If
    194. End Sub
    195. Private Sub BtnBold_Click(sender As Object, e As EventArgs) Handles btnBold.Click
    196. ApplyFontStyle(FontStyle.Bold, selectedColor)
    197. End Sub
    198. Private Sub BtnItalic_Click(sender As Object, e As EventArgs) Handles btnItalic.Click
    199. ApplyFontStyle(FontStyle.Italic, selectedColor)
    200. End Sub
    201. Private Sub BtnUnderline_Click(sender As Object, e As EventArgs) Handles btnUnderline.Click
    202. ApplyFontStyle(FontStyle.Underline, selectedColor)
    203. End Sub
    204. Private Sub ApplyFontStyle(fontStyle As FontStyle, color As Color)
    205. ' Speichern der aktuellen Auswahl
    206. Dim selectionStart As Integer = txtEditor.SelectionStart
    207. Dim selectionLength As Integer = txtEditor.SelectionLength
    208. Dim selectedText As String = txtEditor.SelectedText
    209. Dim originalFont As Font = txtEditor.SelectionFont
    210. Dim originalColor As Color = txtEditor.SelectionColor
    211. ' Anwenden der gewünschten Formatierung
    212. txtEditor.SelectionStart = selectionStart
    213. txtEditor.SelectionLength = selectionLength
    214. txtEditor.SelectionFont = New Font(originalFont, originalFont.Style Or fontStyle)
    215. txtEditor.SelectionColor = color
    216. ' Wiederherstellen der vorherigen Auswahl
    217. txtEditor.Select(selectionStart, selectionLength)
    218. txtEditor.SelectedText = selectedText
    219. txtEditor.Select(selectionStart, selectedText.Length)
    220. End Sub
    221. Private Sub NeuToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuToolStripMenuItem.Click
    222. Dim newForm As New Form1
    223. newForm.Show()
    224. End Sub
    225. Private Sub ÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ÖffnenToolStripMenuItem.Click
    226. OpenFileDialog1.Filter = "RTF-Dateien (*.rtf)|*.rtf|Textdateien (*.txt)|*.txt"
    227. If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
    228. Try
    229. If OpenFileDialog1.FileName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then
    230. ' Öffnen als TXT-Datei
    231. txtEditor.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
    232. ElseIf OpenFileDialog1.FileName.EndsWith(".rtf", StringComparison.OrdinalIgnoreCase) Then
    233. ' Öffnen als RTF-Datei
    234. txtEditor.LoadFile(OpenFileDialog1.FileName)
    235. Else
    236. MessageBox.Show("Das Dateiformat wird nicht unterstützt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    237. End If
    238. Catch ex As Exception
    239. MessageBox.Show("Fehler beim Öffnen der Datei: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    240. End Try
    241. End If
    242. End Sub
    243. Private Sub SpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SpeichernToolStripMenuItem.Click
    244. SaveFileDialog1.Filter = "RTF-Dateien (*.rtf)|*.rtf|Textdateien (*.txt)|*.txt"
    245. If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
    246. Dim filename As String = SaveFileDialog1.FileName
    247. If filename.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then
    248. ' Speichern als TXT-Datei
    249. txtEditor.SaveFile(filename, RichTextBoxStreamType.PlainText)
    250. Else
    251. ' Speichern als RTF-Datei
    252. txtEditor.SaveFile(filename, RichTextBoxStreamType.RichText)
    253. End If
    254. End If
    255. End Sub
    256. Private Sub SpeichernAlsRtf(filename As String)
    257. ' Speichern des RichTextBox-Inhalts im RTF-Format
    258. Dim rtfContent As String = ""
    259. For Each c As Char In txtEditor.Text
    260. Dim fontSize As Single = txtEditor.SelectionFont.Size
    261. rtfContent &= "{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Arial;}}" & vbCrLf
    262. rtfContent &= "{\colortbl ;" & ColorTranslator.ToHtml(txtEditor.SelectionColor) & ";}" & vbCrLf
    263. rtfContent &= "\viewkind4\uc1\pard\cf1\f0\fs" & CInt(fontSize * 2) & " " & c & vbCrLf
    264. Next
    265. File.WriteAllText(filename, rtfContent)
    266. End Sub
    267. Private Sub DruckenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DruckenToolStripMenuItem.Click
    268. Dim printDoc As New Printing.PrintDocument
    269. AddHandler printDoc.PrintPage, AddressOf PrintPageHandler
    270. Dim printDialog As New PrintDialog With {
    271. .Document = printDoc
    272. }
    273. If printDialog.ShowDialog() = DialogResult.OK Then
    274. printDoc.Print()
    275. End If
    276. End Sub
    277. Private Sub PrintPageHandler(sender As Object, e As Printing.PrintPageEventArgs)
    278. Dim printFont As New Font("Arial", 12)
    279. e.Graphics.DrawString(txtEditor.Text, printFont, Brushes.Black, New RectangleF(100, 100, e.MarginBounds.Width, e.MarginBounds.Height))
    280. End Sub
    281. Private Sub DesktopDoubleClickHandler(sender As Object, e As EventArgs)
    282. Dim desktopPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) ' Pfad zum Desktop
    283. Dim selectedFile As String = Path.Combine(desktopPath, "example.txt") ' Beispieldatei auf dem Desktop
    284. If File.Exists(selectedFile) Then
    285. LoadFileToRichTextBox(selectedFile)
    286. End If
    287. End Sub
    288. Private Sub LoadFileToRichTextBox(filePath As String)
    289. ' Dateiinhalt in die RichTextBox laden
    290. If File.Exists(filePath) Then
    291. Dim fileContent As String = File.ReadAllText(filePath)
    292. txtEditor.Rtf = fileContent
    293. End If
    294. End Sub
    295. End Class


    Könnt ihr mir bitte dabei helfen?

    Beiträge noch einmal zusammengefügt. ~Thunderbolt
    Wie man mich kontaktieren kann:
    thiemo-melhorn.de

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()

    Was hast du nie bekommen?

    Nur mal so nebenbei damit du weißt was ich meine, färbe mal die "Farb"Buttons entsprechend ein und ersetz mal deine ColorButton_Click hiermit

    VB.NET-Quellcode

    1. Private Sub ColorButton_Click(sender As Object, e As EventArgs) Handles btnBlack.Click, btnRed.Click, btnGreen.Click, btnBlue.Click
    2. If rtb.SelectionLength = 0 Then rtb.Select(0, rtb.Text.Length)
    3. rtb.SelectionColor = DirectCast(sender, Button).BackColor
    4. End Sub
    das AddHandler-Gedusel brauchst dann auch nicht mehr im Load Event
    Thiemo, nutze die KI mal anders. Anstatt in der Hoffnung Copy&Paste fertigen Code zu bekommen, lass dir von der KI die Grundlagen beibringen. Frag die KI gezielt nach bestimmten Wörtern. So hast du zumindest annähernd die Chance die Grundlagen zu lernen, denn die kannst du leider immer noch nicht. KI kann bei manchen Sachen helfen, ich hab ChatGPT ausgiebig getestet und kam zu der überzeugung das KIs noch Jahre brauchen werden um den Job eines vollwertigen Programmiers wirklich machen zu können. Aktuell kam man damit nur ein wenig Arbeitszeit sparen, oder sich kurz eine Info hohlen, bei der man nicht mal 100% sicher sein kann, das es timmt.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DTF“ ()

    Moin moin

    Ich muss zugeben, das ich es auch mal mit der "KI ChatGPT" versucht habe, weil es so oft hoch gelobt wurde. Gerade auf YouTube grassieren Videos nach dem Motto:
    "Ein vollwertiges Programm in einer Stunde mit ChatGPT"!

    Mein Fazit ist:
    Wenn man die Grundlagen nicht kennt und der KI nicht gezielt die "richtigen" Fragen stellt, kommt man damit kaum weiter!
    Meist produziert die KI unnütz langen und oft auch völlig unverständlichen Code und oft auch noch alten VB-Code.

    Wie @DTF schon schrieb, um sich mal eine schnelle Info zu holen ist es OK aber man muss diese Infos auch genau überprüfen, sonst kann es sein das man ewig nach Fehlern sucht, weil man der KI auf Richtigkeit vertraut hat.

    Was ich noch festgestellt habe ist:
    Bis man der KI die "richtig formulierte Frage" zu einem Problem geschrieben hat, ist man in den Foren suchen oft schneller bei einer Lösung.
    Wenn die KI das Problem nicht "versteht" kann man Stunden damit verbringen und kommt keinen Schritt weiter. Und wenn man die Grundlagen nicht kennt, kann man die Fragen auch nicht "richtig" formulieren.

    Was recht gut funktioniert ist: Wenn ich z.B. eine Methode geschrieben habe, welche dann nach Tests funktioniert und in mir wächst der Eindruck, das diese zu lang oder zu kompliziert geschrieben ist, die KI nach einer Korrektur / Kürzung zu fragen.
    Hier gibt die KI im Zuge von OOP / CleanCode usw dann doch recht gute Ansätze, welche man aber auch wieder überprüfen muss.

    Rote Farbe entfernt. ~Trade
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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