Zeilenumbruch Textbox

  • VB.NET

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

    Zeilenumbruch Textbox

    Hallo Zusammen,

    habe wieder mal ein Problem. Wenn ich einen Text über mehrere Zeilen z.B. aus Excel oder Word in eine TextBox kopiere, dann gehen in der TextBox die Zeilenumbrüche verloren. Dies ist jedoch nur in der TextBox der Fall, weil beim anschließenden Ausdruck mit dem Crystal Report, werden die Zeilenumbrüche wieder richtig gesetzt. Ich möchte auch auf keine Richtextbox umsteigen, weil das Projekt schon so eine größe hat, dass es nur mit sehr viel Aufwand möglich ist, alle TextBoxen mit einer Richtextbox zu ersetzen.

    Für eine Hilfe wäre ich sehr dankbar.

    toeller schrieb:

    alle TextBoxen mit einer Richtextbox zu ersetzen
    Gehst Du in die Datei FormX.Designer.vb und ersetzt dort pro TextBox zwei Mal TextBox durch RichTextBox.
    Feddich.
    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!

    toeller schrieb:

    weil
    Kannst Du uns mit einer vollständigen Problembeschreibung / Aufgabenstellung erfreuen?
    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!
    Nochmal genauer zu meinem Problem:
    Ich importiere mir mit folgendem Code Werte aus einer Exceltabelle:

    VB.NET-Quellcode

    1. Private Sub FormAngebotdetailsImport_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. DataAdapter1 = New OleDbDataAdapter("Select * From [Import Angebotsprogramm$] where Importieren = " & Chr(34) & "Ja" & Chr(34), Con)
    3. Con.Open()
    4. DataAdapter1.Fill(AngeboteGranitwerkeDataSet.ImportAngebotdetails)
    5. ImportAngebotdetailsDataGridView.DataSource = AngeboteGranitwerkeDataSet.ImportAngebotdetails
    6. ImportAngebotdetailsBindingSource.DataSource = AngeboteGranitwerkeDataSet.ImportAngebotdetails
    7. Con.Close()
    8. End Sub


    Hier werden die Zeilenumbrüche in der Datatable ImportAngebotdetails noch richtig angezeigt, wenn ich debugge.

    Jetzt speichere ich mit folgendem Code die Daten:

    VB.NET-Quellcode

    1. Public Positionsmerker As String = Nothing
    2. Public Position1Anlegen As Boolean = True
    3. Public Sub ImportAngebotdetailsAusExcel()
    4. Dim NewrowAngebotsposition As AngeboteGranitwerkeDataSet.AngebotspositionRow = AngeboteGranitwerkeDataSet.Angebotsposition.NewAngebotspositionRow
    5. Dim NewrowAngebotsunterposition As AngeboteGranitwerkeDataSet.AngebotsunterpositionenRow = AngeboteGranitwerkeDataSet.Angebotsunterpositionen.NewAngebotsunterpositionenRow
    6. Dim NewrowAngebotsunterunterposition As AngeboteGranitwerkeDataSet.AngebotsunterunterpositionenRow = AngeboteGranitwerkeDataSet.Angebotsunterunterpositionen.NewAngebotsunterunterpositionenRow
    7. For Each ImportZeile As AngeboteGranitwerkeDataSet.ImportAngebotdetailsRow In FormAngebotdetailsImport.AngeboteGranitwerkeDataSet.ImportAngebotdetails.Rows
    8. Dim AktuellesAngebot As AngeboteGranitwerkeDataSet.AngebotRow = CType(CType(AngebotBindingSource.Current, System.Data.DataRowView).Row, AngeboteGranitwerkeDataSet.AngebotRow)
    9. If Not ImportZeile.IsPosNummerNull Then
    10. Positionsmerker = ImportZeile.PosNummer
    11. Else
    12. Positionsmerker = Nothing
    13. End If
    14. If Position1Anlegen = True Then
    15. NewrowAngebotsposition = AngeboteGranitwerkeDataSet.Angebotsposition.NewAngebotspositionRow
    16. NewrowAngebotsposition.AngebotRow = AktuellesAngebot
    17. If Not ImportZeile.IsPosNummerNull Then NewrowAngebotsposition.Nummer = ImportZeile.PosNummer
    18. If Not ImportZeile.IsPosÜberschriftNull Then NewrowAngebotsposition.Überschrift = ImportZeile.PosÜberschrift
    19. AngeboteGranitwerkeDataSet.Angebotsposition.AddAngebotspositionRow(NewrowAngebotsposition)
    20. AngebotspositionTableAdapter.Update(Me.AngeboteGranitwerkeDataSet.Angebotsposition)
    21. Position1Anlegen = False
    22. Else
    23. If (Not ImportZeile.IsPosNummerNull And Not String.IsNullOrEmpty(Positionsmerker)) Then
    24. NewrowAngebotsposition = AngeboteGranitwerkeDataSet.Angebotsposition.NewAngebotspositionRow
    25. NewrowAngebotsposition.AngebotRow = AktuellesAngebot
    26. If Not ImportZeile.IsPosNummerNull Then NewrowAngebotsposition.Nummer = ImportZeile.PosNummer
    27. If Not ImportZeile.IsPosÜberschriftNull Then NewrowAngebotsposition.Überschrift = ImportZeile.PosÜberschrift
    28. AngeboteGranitwerkeDataSet.Angebotsposition.AddAngebotspositionRow(NewrowAngebotsposition)
    29. AngebotspositionTableAdapter.Update(Me.AngeboteGranitwerkeDataSet.Angebotsposition)
    30. Position1Anlegen = False
    31. End If
    32. End If
    33. If Not ImportZeile.IsUPosNummerNull Then 'And ImportZeile.UPosNummer <> "" Then
    34. NewrowAngebotsunterposition = AngeboteGranitwerkeDataSet.Angebotsunterpositionen.NewAngebotsunterpositionenRow
    35. NewrowAngebotsunterposition.AngebotspositionRow = NewrowAngebotsposition
    36. If Not ImportZeile.IsUPosNummerNull Then NewrowAngebotsunterposition.Nummer = ImportZeile.UPosNummer
    37. If Not ImportZeile.IsUPosLeistungNull Then NewrowAngebotsunterposition.Leistung = ImportZeile.UPosLeistung
    38. If Not ImportZeile.IsUPosLeistungsbeschreibungNull Then NewrowAngebotsunterposition.Leistungsbeschreibung = ImportZeile.UPosLeistungsbeschreibung
    39. If Not ImportZeile.IsUPosMaterialNull Then NewrowAngebotsunterposition.Material = ImportZeile.UPosMaterial
    40. If Not ImportZeile.IsUPosLängeNull Then NewrowAngebotsunterposition.Länge = ImportZeile.UPosLänge
    41. If Not ImportZeile.IsUPosMaßLBNull Then NewrowAngebotsunterposition.MaßLB = ImportZeile.UPosMaßLB
    42. If Not ImportZeile.IsUPosBreiteNull Then NewrowAngebotsunterposition.Breite = ImportZeile.UPosBreite
    43. If Not ImportZeile.IsUPosMaßBHNull Then NewrowAngebotsunterposition.MaßBH = ImportZeile.UPosMaßBH
    44. If Not ImportZeile.IsUPosHöheNull Then NewrowAngebotsunterposition.Höhe = ImportZeile.UPosHöhe
    45. If Not ImportZeile.IsUPosFreiesMaßNull Then NewrowAngebotsunterposition.FreiesMaß = ImportZeile.UPosFreiesMaß
    46. If Not ImportZeile.IsUPosBearbeitungNull Then NewrowAngebotsunterposition.Bearbeitung = ImportZeile.UPosBearbeitung
    47. If Not ImportZeile.IsUPosFreitextNull Then NewrowAngebotsunterposition.Freitext = ImportZeile.UPosFreitext
    48. If Not ImportZeile.IsUPosMengeNull Then NewrowAngebotsunterposition.Menge = ImportZeile.UPosMenge
    49. If Not ImportZeile.IsUPosEinheitNull Then NewrowAngebotsunterposition.Einheit = ImportZeile.UPosEinheit
    50. If Not ImportZeile.IsUPosEinheitspreisNull Then NewrowAngebotsunterposition.Einheitspreis = ImportZeile.UPosEinheitspreis
    51. If Not ImportZeile.IsUPosGesamtpreisNull Then
    52. NewrowAngebotsunterposition.Gesamtpreis = ImportZeile.UPosGesamtpreis
    53. Else
    54. NewrowAngebotsunterposition.Gesamtpreis = 0
    55. End If
    56. If ImportZeile.IsUPosGesPrUnterdrückenNull Then
    57. NewrowAngebotsunterposition.GesPrUnterdrücken = False
    58. Else
    59. NewrowAngebotsunterposition.GesPrUnterdrücken = True
    60. NewrowAngebotsunterposition.Gesamtpreis = 0
    61. End If
    62. AngeboteGranitwerkeDataSet.Angebotsunterpositionen.AddAngebotsunterpositionenRow(NewrowAngebotsunterposition)
    63. AngebotsunterpositionenTableAdapter.Update(Me.AngeboteGranitwerkeDataSet.Angebotsunterpositionen)
    64. End If
    65. If Not ImportZeile.IsUuPosNummerNull Then
    66. NewrowAngebotsunterunterposition = AngeboteGranitwerkeDataSet.Angebotsunterunterpositionen.NewAngebotsunterunterpositionenRow
    67. NewrowAngebotsunterunterposition.AngebotsunterpositionenRow = NewrowAngebotsunterposition
    68. If Not ImportZeile.IsUuPosNummerNull Then NewrowAngebotsunterunterposition.Nummer = ImportZeile.UuPosNummer
    69. If Not ImportZeile.IsUuPosMengeNull Then NewrowAngebotsunterunterposition.Menge = ImportZeile.UuPosMenge
    70. If Not ImportZeile.IsUuPosEinheitNull Then NewrowAngebotsunterunterposition.Einheit = ImportZeile.UuPosEinheit
    71. If Not ImportZeile.IsUuPosLeistungstextNull Then NewrowAngebotsunterunterposition.Leistungstext = ImportZeile.UuPosLeistungstext
    72. If Not ImportZeile.IsUuPosEinheitspreisNull Then NewrowAngebotsunterunterposition.Einheitspreis = ImportZeile.UuPosEinheitspreis
    73. If Not ImportZeile.IsUuPosGesamtpreisNull Then NewrowAngebotsunterunterposition.Gesamtpreis = ImportZeile.UuPosGesamtpreis
    74. If ImportZeile.IsUuPosGesPrUnterdrückenNull Then
    75. NewrowAngebotsunterunterposition.GesPrUnterdrücken = False
    76. Else
    77. NewrowAngebotsunterunterposition.GesPrUnterdrücken = True
    78. NewrowAngebotsunterunterposition.Gesamtpreis = 0
    79. End If
    80. AngeboteGranitwerkeDataSet.Angebotsunterunterpositionen.AddAngebotsunterunterpositionenRow(NewrowAngebotsunterunterposition)
    81. AngebotsunterunterpositionenTableAdapter.Update(Me.AngeboteGranitwerkeDataSet.Angebotsunterunterpositionen)
    82. End If
    83. Next
    84. End Sub


    In der TextBox werden anschließend jedoch keine Zeilenumbrüche berücksichtigt. Kopiere ich dann zum Test den gesamten Inhalt der Textbox und füge diesen dann z.B. in Word ein, werden die Zeilenumbrüche berücksichtigt. Genau das verstehe ich nicht, wieso die Textbox den Textinhalt ohne Zeilenumbrüche anzeigt.
    Was hat denn der

    toeller schrieb:

    Textinhalt
    für Zeilenende-Kennungen?
    Es gibt vbCr, vbLf, vbCrLf (um mal die schnöden VisualBasic-Bezeichnungen zu benutzen).
    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 ich debugge und setze bei folgender Zeile einen Haltepunkt:

    VB.NET-Quellcode

    1. If Not ImportZeile.IsUPosLeistungsbeschreibungNull Then NewrowAngebotsunterposition.Leistungsbeschreibung = ImportZeile.UPosLeistungsbeschreibung


    dann erhalte ich als Antwort:

    "Das ist ein Test" & vbLf & "Das hier ist ein weiterer Test"

    Also müsste es vblf sein meiner Meinung nach. Dieses Beispiel hat jetzt nur 2 Zeilen, es können unter Umständen deutlich mehr sein.

    toeller schrieb:

    vblf
    ersetz das mal durch vbCrLf.
    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!