Imports System.Data.SqlClient Imports VERAG_PROG_ALLGEMEIN Public Class frmEintragTvNew Dim AvisoTvNewDAL As New cAvisoTvNewDAL() Dim myAvisoTvNew As cAvisoTvNew Dim hatAenderung As Boolean = False Dim Neuanlage As Boolean = False Dim list As New List(Of cAvisoTvNew)() Dim listAll As New List(Of cAvisoTvNew)() Private isInitializing As Boolean = False ' **Neue Klassenvariable zur Speicherung der zuletzt ausgewählten TVID** Private lastSelectedTVID As Integer = 0 Public Sub New() InitializeComponent() InitializeFontComboBoxes() Icon = cMeineFunktionenAVISO.GetProgrammIcon() End Sub Private Sub frmEintragTvNew_Load(sender As Object, e As EventArgs) Handles MyBase.Load LadeStandorte() LadeTvTextBezeichnungen() LadenAlleEintraege() grpWochentage.Enabled = chkIsRecurring.Checked dgvAVISOTV.SelectionMode = DataGridViewSelectionMode.FullRowSelect dgvAVISOTV.MultiSelect = False dtpStartDate.ShowCheckBox = True dtpEndDate.ShowCheckBox = True dtpStartTime.ShowCheckBox = True dtpEndTime.ShowCheckBox = True chkIsActive.Checked = True End Sub Private Sub LadenAlleEintraege() Try AvisoTvNewDAL.LesenAlleAvisoTvNew(listAll) Catch ex As Exception MessageBox.Show("Fehler beim Laden aller Einträge: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub LadeStandorte() Dim standorte As New List(Of String)() Try Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError() If conn Is Nothing Then MessageBox.Show("Die Datenbankverbindung konnte nicht hergestellt werden.", "Verbindungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If Dim sql As String = "SELECT DISTINCT Standort FROM StandorteTV ORDER BY Standort" Using cmd As New SqlCommand(sql, conn) Using dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim standort As String = Convert.ToString(dr("Standort")) standorte.Add(standort) End While End Using End Using Catch ex As SqlException MessageBox.Show("SQL Fehler beim Laden der Standorte: " & ex.Message, "SQL Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Catch ex As Exception MessageBox.Show("Allgemeiner Fehler beim Laden der Standorte: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try cbxStandort.Items.Clear() cbxStandort.Items.AddRange(standorte.ToArray()) If cbxStandort.Items.Count > 0 Then cbxStandort.SelectedIndex = 0 End Sub Private Sub initdgv() Try RemoveHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged Dim standort As String = cbxStandort.SelectedItem?.ToString() Dim showInactive As Boolean = chkShowInactive.Checked Dim gefilterteListe As List(Of cAvisoTvNew) If showInactive Then gefilterteListe = list.Where(Function(x) x.Standort = standort).ToList() Else gefilterteListe = list.Where(Function(x) x.Standort = standort AndAlso x.IsActive).ToList() End If dgvAVISOTV.DataSource = Nothing dgvAVISOTV.Rows.Clear() If gefilterteListe.Count > 0 Then dgvAVISOTV.DataSource = gefilterteListe ' Anpassen der Spaltenüberschriften dgvAVISOTV.Columns("TvTextBezeichnungID").HeaderText = "ID" dgvAVISOTV.Columns("TvTextBezeichnung").HeaderText = "Bezeichnung" dgvAVISOTV.Columns("FixeZeile1RTF").HeaderText = "Zeile 1 (Text)" dgvAVISOTV.Columns("FixeZeile2RTF").HeaderText = "Zeile 2 (Text)" dgvAVISOTV.Columns("FixeZeile3RTF").HeaderText = "Zeile 3 (Text)" dgvAVISOTV.Columns("Standort").Visible = False dgvAVISOTV.Columns("Art").Visible = False dgvAVISOTV.Columns("StartDate").HeaderText = "Startdatum" dgvAVISOTV.Columns("EndDate").HeaderText = "Enddatum" dgvAVISOTV.Columns("StartTime").HeaderText = "Startzeit" dgvAVISOTV.Columns("EndTime").HeaderText = "Endzeit" dgvAVISOTV.Columns("IsRecurring").HeaderText = "Wiederholen" dgvAVISOTV.Columns("IsActive").HeaderText = "Aktiv" dgvAVISOTV.Columns("IsMonday").Visible = False dgvAVISOTV.Columns("IsTuesday").Visible = False dgvAVISOTV.Columns("IsWednesday").Visible = False dgvAVISOTV.Columns("IsThursday").Visible = False dgvAVISOTV.Columns("IsFriday").Visible = False dgvAVISOTV.Columns("IsSaturday").Visible = False dgvAVISOTV.Columns("IsSunday").Visible = False ' Hinzufügen des CellFormatting-Handlers AddHandler dgvAVISOTV.CellFormatting, AddressOf dgvAVISOTV_CellFormatting dgvAVISOTV.AutoResizeColumns() AddHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged ' **Wiederherstellung der Auswahl basierend auf lastSelectedTVID** If lastSelectedTVID <> 0 Then Dim rowToSelect = dgvAVISOTV.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(r) CType(r.DataBoundItem, cAvisoTvNew).TvTextBezeichnungID = lastSelectedTVID) If rowToSelect IsNot Nothing Then rowToSelect.Selected = True dgvAVISOTV.FirstDisplayedScrollingRowIndex = rowToSelect.Index dgvAVISOTV.CurrentCell = rowToSelect.Cells(0) Else ' Falls die TVID nicht gefunden wird, wähle die erste Zeile aus If dgvAVISOTV.Rows.Count > 0 Then dgvAVISOTV.Rows(0).Selected = True dgvAVISOTV.CurrentCell = dgvAVISOTV.Rows(0).Cells(0) dgvAVISOTV_SelectionChanged(Nothing, Nothing) End If End If ElseIf dgvAVISOTV.Rows.Count > 0 Then dgvAVISOTV.Rows(0).Selected = True dgvAVISOTV.CurrentCell = dgvAVISOTV.Rows(0).Cells(0) dgvAVISOTV_SelectionChanged(Nothing, Nothing) End If Else AddHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged ClearFields() myAvisoTvNew = Nothing End If Neuanlage = False hatAenderung = False Catch ex As Exception MessageBox.Show("Fehler beim Laden der Daten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub dgvAVISOTV_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) ' Definieren Sie die Namen der RTF-Spalten Dim rtfColumns As String() = {"FixeZeile1RTF", "FixeZeile2RTF", "FixeZeile3RTF"} ' Überprüfen Sie, ob die aktuelle Spalte eine der RTF-Spalten ist If rtfColumns.Contains(dgvAVISOTV.Columns(e.ColumnIndex).Name) AndAlso e.Value IsNot Nothing Then Try ' Konvertieren Sie den RTF-Text in normalen Text Using rtb As New RichTextBox() rtb.Rtf = e.Value.ToString() e.Value = rtb.Text e.FormattingApplied = True End Using Catch ex As Exception ' Falls das RTF ungültig ist, zeigen Sie den Originalwert an e.Value = e.Value.ToString() e.FormattingApplied = True End Try End If End Sub Private Sub cbxStandort_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxStandort.SelectedValueChanged If list IsNot Nothing Then list.Clear() Dim selectedStandort As String = If(cbxStandort.SelectedItem IsNot Nothing, cbxStandort.SelectedItem.ToString(), "") Try AvisoTvNewDAL.LesenAvisoTvNew(0, "", selectedStandort, list) Catch ex As Exception MessageBox.Show("Fehler beim Lesen der Einträge: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End Try LadeTvTextBezeichnungen() initdgv() End Sub Private Sub btnNeu_Click(sender As Object, e As EventArgs) Dim standort As String = cbxStandort.SelectedItem?.ToString() If String.IsNullOrEmpty(standort) Then MessageBox.Show("Bitte wählen Sie einen Standort aus.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning) Return End If Dim standortID As Integer = AvisoTvNewDAL.GetStandortID(standort) If standortID = 0 Then MessageBox.Show("Ungültiger Standort ausgewählt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If myAvisoTvNew = New cAvisoTvNew() With { .StandortID = standortID, .Standort = standort, .Art = "", .IsActive = True } cmbTvTextBezeichnungAuswahl.SelectedIndex = -1 txtNeueTvTextBezeichnung.Text = "" Neuanlage = True hatAenderung = False Me.Text = "Neuen Eintrag hinzufügen" End Sub Public Class ComboBoxItem Public Property ID As Integer Public Property DisplayText As String Public Overrides Function ToString() As String Return DisplayText End Function End Class Private Sub cmbTvTextBezeichnungAuswahl_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbTvTextBezeichnungAuswahl.SelectedIndexChanged If isInitializing Then Return End If If cmbTvTextBezeichnungAuswahl.SelectedValue Is Nothing OrElse cmbTvTextBezeichnungAuswahl.SelectedValue Is DBNull.Value Then Return End If Try Dim selectedTvTextBezeichnungID As Integer Try selectedTvTextBezeichnungID = Convert.ToInt32(cmbTvTextBezeichnungAuswahl.SelectedValue) Debug.WriteLine("Selected TvTextBezeichnungID: " & selectedTvTextBezeichnungID) Catch ex As Exception MessageBox.Show("Ungültiger Wert für TvTextBezeichnungID: " & ex.Message, "Konvertierungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End Try If listAll Is Nothing OrElse Not listAll.Any() Then MessageBox.Show("Die Liste aller AvisoEinträge ist nicht geladen oder leer.", "Datenfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If Dim selectedAviso As cAvisoTvNew = listAll.FirstOrDefault(Function(x) x.TvTextBezeichnungID = selectedTvTextBezeichnungID AndAlso x.IsActive) Dim currentStandort As String = cbxStandort.SelectedItem?.ToString() Dim currentStandortID As Integer = AvisoTvNewDAL.GetStandortID(currentStandort) If selectedAviso IsNot Nothing Then Debug.WriteLine("Gefundenes Aviso: TVID = " & selectedAviso.TvTextBezeichnungID) myAvisoTvNew = selectedAviso Neuanlage = False FillFieldsFromAviso(selectedAviso) Me.Text = "Eintrag bearbeiten" txtNeueTvTextBezeichnung.Text = "" Else Debug.WriteLine("Kein bestehender Eintrag gefunden. Neuer Eintrag wird erstellt.") myAvisoTvNew = New cAvisoTvNew() With { .IsActive = True, .StandortID = currentStandortID, .Standort = currentStandort } Neuanlage = True Me.Text = "Neuen Eintrag hinzufügen" End If Catch ex As InvalidCastException MessageBox.Show("Fehler beim Konvertieren der TvTextBezeichnungID: " & ex.Message, "Konvertierungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Catch ex As Exception MessageBox.Show("Ein unerwarteter Fehler ist aufgetreten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub InitializeFontComboBoxes() Dim fontFamilies As New List(Of String)() For Each font As FontFamily In FontFamily.Families fontFamilies.Add(font.Name) Next ' Initialisierung für Zeile 1 cmbFontFamily.DataSource = fontFamilies cmbFontFamily.SelectedItem = rtbZeile1.Font.FontFamily.Name Dim sizes As Integer() = {8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72} cmbFontSize.DataSource = sizes.Select(Function(s) s.ToString()).ToList() cmbFontSize.SelectedItem = CInt(rtbZeile1.Font.Size).ToString() AddHandler cmbFontFamily.SelectedIndexChanged, AddressOf cmbFontFamily_SelectedIndexChanged AddHandler cmbFontSize.SelectedIndexChanged, AddressOf cmbFontSize_SelectedIndexChanged ' Initialisierung für Zeile 2 cmbFontFamily2.DataSource = New List(Of String)(fontFamilies) cmbFontFamily2.SelectedItem = rtbZeile2.Font.FontFamily.Name cmbFontSize2.DataSource = sizes.Select(Function(s) s.ToString()).ToList() cmbFontSize2.SelectedItem = CInt(rtbZeile2.Font.Size).ToString() AddHandler cmbFontFamily2.SelectedIndexChanged, AddressOf cmbFontFamily2_SelectedIndexChanged AddHandler cmbFontSize2.SelectedIndexChanged, AddressOf cmbFontSize2_SelectedIndexChanged ' Initialisierung für Zeile 3 cmbFontFamily3.DataSource = New List(Of String)(fontFamilies) cmbFontFamily3.SelectedItem = rtbZeile3.Font.FontFamily.Name cmbFontSize3.DataSource = sizes.Select(Function(s) s.ToString()).ToList() cmbFontSize3.SelectedItem = CInt(rtbZeile3.Font.Size).ToString() AddHandler cmbFontFamily3.SelectedIndexChanged, AddressOf cmbFontFamily3_SelectedIndexChanged AddHandler cmbFontSize3.SelectedIndexChanged, AddressOf cmbFontSize3_SelectedIndexChanged End Sub ' Schriftfamilie ComboBox SelectionChanged Private Sub cmbFontFamily_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont() End Sub ' Schriftgröße ComboBox SelectionChanged Private Sub cmbFontSize_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont() End Sub Private Sub UpdateFont() Dim selectedFontFamily As String = If(cmbFontFamily.SelectedItem, rtbZeile1.SelectionFont?.FontFamily.Name) Dim selectedFontSize As Single If Single.TryParse(cmbFontSize.SelectedItem, selectedFontSize) Then ' Überprüfen, ob eine Auswahl vorhanden ist If rtbZeile1.SelectionLength > 0 Then ' Erstellen einer neuen Schriftart basierend auf der Auswahl Dim currentFont As Font = rtbZeile1.SelectionFont If currentFont IsNot Nothing Then rtbZeile1.SelectionFont = New Font(selectedFontFamily, selectedFontSize, currentFont.Style) Else ' Wenn die Auswahl unterschiedliche Schriftarten hat, eine neue Schriftart setzen rtbZeile1.SelectionFont = New Font(selectedFontFamily, selectedFontSize) End If Else ' Wenn keine Auswahl vorhanden ist, setzen Sie die Standard-Schriftart der RichTextBox rtbZeile1.Font = New Font(selectedFontFamily, selectedFontSize, rtbZeile1.Font.Style) End If hatAenderung = True End If End Sub ' Methode zum Umschalten des Schriftstils Private Sub ToggleFontStyle(style As FontStyle) If rtbZeile1.SelectionFont IsNot Nothing Then Dim currentFont As Font = rtbZeile1.SelectionFont Dim newFontStyle As FontStyle If rtbZeile1.SelectionFont.Style.HasFlag(style) Then ' Entferne den Stil newFontStyle = currentFont.Style And Not style Else ' Füge den Stil hinzu newFontStyle = currentFont.Style Or style End If ' Setze die neue Schriftart rtbZeile1.SelectionFont = New Font(currentFont.FontFamily, currentFont.Size, newFontStyle) hatAenderung = True End If End Sub ' Fett (Bold) Button Click Private Sub btnBold_Click(sender As Object, e As EventArgs) Handles btnBold.Click ToggleFontStyle(FontStyle.Bold) End Sub ' Kursiv (Italic) Button Click Private Sub btnItalic_Click(sender As Object, e As EventArgs) Handles btnItalic.Click ToggleFontStyle(FontStyle.Italic) End Sub ' Unterstrichen (Underline) Button Click Private Sub btnUnderline_Click(sender As Object, e As EventArgs) Handles btnUnderline.Click ToggleFontStyle(FontStyle.Underline) End Sub ' Textfarbe ändern Button Click Private Sub btnTextColor_Click(sender As Object, e As EventArgs) Handles btnTextColor.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile1.SelectionColor = colorDialogText.Color hatAenderung = True End If End Sub ' Hintergrundfarbe ändern Button Click Private Sub btnBackColor_Click(sender As Object, e As EventArgs) Handles btnBackColor.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile1.SelectionBackColor = colorDialogText.Color hatAenderung = True End If End Sub ' Links ausrichten Button Click Private Sub btnAlignLeft_Click(sender As Object, e As EventArgs) Handles btnAlignLeft.Click rtbZeile1.SelectionAlignment = HorizontalAlignment.Left hatAenderung = True End Sub ' Mitte ausrichten Button Click Private Sub btnAlignCenter_Click(sender As Object, e As EventArgs) Handles btnAlignCenter.Click rtbZeile1.SelectionAlignment = HorizontalAlignment.Center hatAenderung = True End Sub ' Rechts ausrichten Button Click Private Sub btnAlignRight_Click(sender As Object, e As EventArgs) Handles btnAlignRight.Click rtbZeile1.SelectionAlignment = HorizontalAlignment.Right hatAenderung = True End Sub ' Schriftfamilie ComboBox SelectionChanged Private Sub cmbFontFamily2_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont2() End Sub ' Schriftgröße ComboBox SelectionChanged Private Sub cmbFontSize2_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont2() End Sub Private Sub UpdateFont2() Dim selectedFontFamily As String = If(cmbFontFamily2.SelectedItem, rtbZeile2.SelectionFont?.FontFamily.Name) Dim selectedFontSize As Single If Single.TryParse(cmbFontSize2.SelectedItem, selectedFontSize) Then ' Überprüfen, ob eine Auswahl vorhanden ist If rtbZeile2.SelectionLength > 0 Then ' Erstellen einer neuen Schriftart basierend auf der Auswahl Dim currentFont As Font = rtbZeile2.SelectionFont If currentFont IsNot Nothing Then rtbZeile2.SelectionFont = New Font(selectedFontFamily, selectedFontSize, currentFont.Style) Else ' Wenn die Auswahl unterschiedliche Schriftarten hat, eine neue Schriftart setzen rtbZeile2.SelectionFont = New Font(selectedFontFamily, selectedFontSize) End If Else ' Wenn keine Auswahl vorhanden ist, setzen Sie die Standard-Schriftart der RichTextBox rtbZeile2.Font = New Font(selectedFontFamily, selectedFontSize, rtbZeile2.Font.Style) End If hatAenderung = True End If End Sub ' Methode zum Umschalten des Schriftstils Private Sub ToggleFontStyle2(style As FontStyle) If rtbZeile2.SelectionFont IsNot Nothing Then Dim currentFont As Font = rtbZeile2.SelectionFont Dim newFontStyle As FontStyle If rtbZeile2.SelectionFont.Style.HasFlag(style) Then ' Entferne den Stil newFontStyle = currentFont.Style And Not style Else ' Füge den Stil hinzu newFontStyle = currentFont.Style Or style End If ' Setze die neue Schriftart rtbZeile2.SelectionFont = New Font(currentFont.FontFamily, currentFont.Size, newFontStyle) hatAenderung = True End If End Sub ' Fett (Bold) Button Click Private Sub btnBold2_Click(sender As Object, e As EventArgs) Handles btnBold2.Click ToggleFontStyle2(FontStyle.Bold) End Sub ' Kursiv (Italic) Button Click Private Sub btnItalic2_Click(sender As Object, e As EventArgs) Handles btnItalic2.Click ToggleFontStyle2(FontStyle.Italic) End Sub ' Unterstrichen (Underline) Button Click Private Sub btnUnderline2_Click(sender As Object, e As EventArgs) Handles btnUnderline2.Click ToggleFontStyle2(FontStyle.Underline) End Sub ' Textfarbe ändern Button Click Private Sub btnTextColor2_Click(sender As Object, e As EventArgs) Handles btnTextColor2.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile2.SelectionColor = colorDialogText.Color hatAenderung = True End If End Sub ' Hintergrundfarbe ändern Button Click Private Sub btnBackColor2_Click(sender As Object, e As EventArgs) Handles btnBackColor2.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile2.SelectionBackColor = colorDialogText.Color hatAenderung = True End If End Sub ' Links ausrichten Button Click Private Sub btnAlignLeft2_Click(sender As Object, e As EventArgs) Handles btnAlignLeft2.Click rtbZeile2.SelectionAlignment = HorizontalAlignment.Left hatAenderung = True End Sub ' Mitte ausrichten Button Click Private Sub btnAlignCenter2_Click(sender As Object, e As EventArgs) Handles btnAlignCenter2.Click rtbZeile2.SelectionAlignment = HorizontalAlignment.Center hatAenderung = True End Sub ' Rechts ausrichten Button Click Private Sub btnAlignRight2_Click(sender As Object, e As EventArgs) Handles btnAlignRight2.Click rtbZeile2.SelectionAlignment = HorizontalAlignment.Right hatAenderung = True End Sub ' Schriftfamilie ComboBox SelectionChanged Private Sub cmbFontFamily3_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont3() End Sub ' Schriftgröße ComboBox SelectionChanged Private Sub cmbFontSize3_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont3() End Sub Private Sub UpdateFont3() Dim selectedFontFamily As String = If(cmbFontFamily3.SelectedItem, rtbZeile3.SelectionFont?.FontFamily.Name) Dim selectedFontSize As Single If Single.TryParse(cmbFontSize3.SelectedItem, selectedFontSize) Then ' Überprüfen, ob eine Auswahl vorhanden ist If rtbZeile3.SelectionLength > 0 Then ' Erstellen einer neuen Schriftart basierend auf der Auswahl Dim currentFont As Font = rtbZeile3.SelectionFont If currentFont IsNot Nothing Then rtbZeile3.SelectionFont = New Font(selectedFontFamily, selectedFontSize, currentFont.Style) Else ' Wenn die Auswahl unterschiedliche Schriftarten hat, eine neue Schriftart setzen rtbZeile3.SelectionFont = New Font(selectedFontFamily, selectedFontSize) End If Else ' Wenn keine Auswahl vorhanden ist, setzen Sie die Standard-Schriftart der RichTextBox rtbZeile3.Font = New Font(selectedFontFamily, selectedFontSize, rtbZeile3.Font.Style) End If hatAenderung = True End If End Sub ' Methode zum Umschalten des Schriftstils Private Sub ToggleFontStyle3(style As FontStyle) If rtbZeile3.SelectionFont IsNot Nothing Then Dim currentFont As Font = rtbZeile3.SelectionFont Dim newFontStyle As FontStyle If rtbZeile3.SelectionFont.Style.HasFlag(style) Then ' Entferne den Stil newFontStyle = currentFont.Style And Not style Else ' Füge den Stil hinzu newFontStyle = currentFont.Style Or style End If ' Setze die neue Schriftart rtbZeile3.SelectionFont = New Font(currentFont.FontFamily, currentFont.Size, newFontStyle) hatAenderung = True End If End Sub ' Fett (Bold) Button Click Private Sub btnBold3_Click(sender As Object, e As EventArgs) Handles btnBold3.Click ToggleFontStyle3(FontStyle.Bold) End Sub ' Kursiv (Italic) Button Click Private Sub btnItalic3_Click(sender As Object, e As EventArgs) Handles btnItalic3.Click ToggleFontStyle3(FontStyle.Italic) End Sub ' Unterstrichen (Underline) Button Click Private Sub btnUnderline3_Click(sender As Object, e As EventArgs) Handles btnUnderline3.Click ToggleFontStyle3(FontStyle.Underline) End Sub ' Textfarbe ändern Button Click Private Sub btnTextColor3_Click(sender As Object, e As EventArgs) Handles btnTextColor3.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile3.SelectionColor = colorDialogText.Color hatAenderung = True End If End Sub ' Hintergrundfarbe ändern Button Click Private Sub btnBackColor3_Click(sender As Object, e As EventArgs) Handles btnBackColor3.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile3.SelectionBackColor = colorDialogText.Color hatAenderung = True End If End Sub ' Links ausrichten Button Click Private Sub btnAlignLeft3_Click(sender As Object, e As EventArgs) Handles btnAlignLeft3.Click rtbZeile3.SelectionAlignment = HorizontalAlignment.Left hatAenderung = True End Sub ' Mitte ausrichten Button Click Private Sub btnAlignCenter3_Click(sender As Object, e As EventArgs) Handles btnAlignCenter3.Click rtbZeile3.SelectionAlignment = HorizontalAlignment.Center hatAenderung = True End Sub ' Rechts ausrichten Button Click Private Sub btnAlignRight3_Click(sender As Object, e As EventArgs) Handles btnAlignRight3.Click rtbZeile3.SelectionAlignment = HorizontalAlignment.Right hatAenderung = True End Sub Private Sub LadeTvTextBezeichnungen() isInitializing = True Dim bezeichnungen As New List(Of cTvTextBezeichnung)() Try bezeichnungen = AvisoTvNewDAL.LadenAlleTvTextBezeichnungen() Catch ex As Exception MessageBox.Show("Fehler beim Laden der TvTextBezeichnungen: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) isInitializing = False Return End Try Dim items As New List(Of ComboBoxItem)() For Each bezeichnung In bezeichnungen items.Add(New ComboBoxItem() With { .ID = bezeichnung.TvTextBezeichnungID, .DisplayText = bezeichnung.TvTextBezeichnung }) Next cmbTvTextBezeichnungAuswahl.DataSource = items cmbTvTextBezeichnungAuswahl.DisplayMember = "DisplayText" cmbTvTextBezeichnungAuswahl.ValueMember = "ID" cmbTvTextBezeichnungAuswahl.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList cmbTvTextBezeichnungAuswahl.SelectedIndex = -1 cmbPosition.SelectedIndex = -1 isInitializing = False Debug.WriteLine("TvTextBezeichnungen geladen:") For Each item In items Debug.WriteLine($"ID: {item.ID}, Text: {item.DisplayText}") Next End Sub Private Sub txtNeueTvTextBezeichnung_TextChanged(sender As Object, e As EventArgs) Handles txtNeueTvTextBezeichnung.TextChanged If Not String.IsNullOrWhiteSpace(txtNeueTvTextBezeichnung.Text) Then cmbTvTextBezeichnungAuswahl.SelectedIndex = -1 myAvisoTvNew = New cAvisoTvNew() With { .TvTextBezeichnung = txtNeueTvTextBezeichnung.Text.Trim(), .IsActive = True } Neuanlage = True Me.Text = "Neuen Eintrag hinzufügen" End If End Sub Private Sub FillFieldsFromAviso(ByVal aviso As cAvisoTvNew) cmbTvTextBezeichnungAuswahl.SelectedValue = aviso.TvTextBezeichnungID If Not String.IsNullOrEmpty(aviso.Position) Then cmbPosition.SelectedItem = aviso.Position Else cmbPosition.SelectedIndex = -1 End If txtNeueTvTextBezeichnung.Text = "" ' Hier setzt du die Textzeilen, wenn vorhanden rtbZeile1.Rtf = aviso.FixeZeile1RTF rtbZeile2.Rtf = aviso.FixeZeile2RTF rtbZeile3.Rtf = aviso.FixeZeile3RTF chkIsRecurring.Checked = aviso.IsRecurring.GetValueOrDefault(False) If aviso.StartDate.HasValue Then dtpStartDate.Value = aviso.StartDate.Value dtpStartDate.Checked = True Else dtpStartDate.Value = DateTime.Now dtpStartDate.Checked = False End If If aviso.EndDate.HasValue Then dtpEndDate.Value = aviso.EndDate.Value dtpEndDate.Checked = True Else dtpEndDate.Value = DateTime.Now dtpEndDate.Checked = False End If If aviso.StartTime.HasValue Then dtpStartTime.Value = DateTime.Today.Add(aviso.StartTime.Value) dtpStartTime.Checked = True Else dtpStartTime.Value = DateTime.Now dtpStartTime.Checked = False End If If aviso.EndTime.HasValue Then dtpEndTime.Value = DateTime.Today.Add(aviso.EndTime.Value) dtpEndTime.Checked = True Else dtpEndTime.Value = DateTime.Now dtpEndTime.Checked = False End If chkMonday.Checked = aviso.IsMonday.GetValueOrDefault(False) chkTuesday.Checked = aviso.IsTuesday.GetValueOrDefault(False) chkWednesday.Checked = aviso.IsWednesday.GetValueOrDefault(False) chkThursday.Checked = aviso.IsThursday.GetValueOrDefault(False) chkFriday.Checked = aviso.IsFriday.GetValueOrDefault(False) chkSaturday.Checked = aviso.IsSaturday.GetValueOrDefault(False) chkSunday.Checked = aviso.IsSunday.GetValueOrDefault(False) chkIsActive.Checked = aviso.IsActive grpWochentage.Enabled = chkIsRecurring.Checked End Sub Private Function ConvertRtfToHtml(rtf As String) As String Using rtb As New RichTextBox() rtb.Rtf = rtf Dim sb As New System.Text.StringBuilder() ' Initialisiere die HTML-Struktur sb.Append("
") ' Teile den Text in Absätze auf Dim paragraphs As String() = rtb.Text.Split(New String() {vbCrLf, vbLf}, StringSplitOptions.None) Dim charIndex As Integer = 0 For Each paragraph As String In paragraphs ' Wähle den aktuellen Absatz aus rtb.Select(charIndex, paragraph.Length) ' Erhalte die Ausrichtung des aktuellen Absatzes Dim alignment As HorizontalAlignment = rtb.SelectionAlignment ' Öffne einen Div-Tag mit der entsprechenden Textausrichtung Select Case alignment Case HorizontalAlignment.Left sb.Append("