Scroll im Textfeld

  • VB.NET
  • .NET (FX) 4.0

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

    Scroll im Textfeld

    Hallo,

    hab eine TextBox mit Eigenschaften:
    WordWrap=false
    MultiLine=true
    ScrollBars=both
    MaxLength=0

    Aus dem Programm werden nun nacheinander sehr lange Zeilen (ca 2000 Ziffern) in die Box hineingeschrieben mit vbCrLf am Ende jeder Zeile (dann folgt die nächste Zeile),
    und trotzdem wird jede Zeile ab einer Länge 1024=2^10 Zeichen umbrochen- scroll_horizontal erfüllt damit die Funktion nicht.
    Die Zeilen sollten doch zusammenhängend bleiben!
    Verstehe nicht, warum die Zeile umgebrochen wird, wenn ich Scroll hab?

    Kann mir da jemand helfen, wie ich diesen störenden Misstand aufheben könnte?

    hybernate5

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

    @hybernate5 Nimm eine RichTextBox, da funktioniert das (getestet).
    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!
    hab Matrizen (z.B.: 9x12) die ich als Vektor 9*12= 108 Elemente schreibe. Wenn die Berechnung diese einzelnen Elemente als Double-Zahl ausgibt, hast schon 15 Nachkommastellen pro Element.
    Also 108 * 15 = 1620 nur Nachkomma-Ziffern. Da bist du mit Trennzeichen zwischen den Elementen, der Vorkommastelle und dem Komma selbst schon nahe an der genannten Länge.
    Dabe ist die Matrix gar nicht groß.
    Mir kommt es darauf an, die einzelnen Vektoren rein optisch zu vergleichen, um z.B.: lineare Abhängigkeiten unter mehreren Matrizen zu erkennen.
    Also da leppert sich was zusammen.
    Wenn dann die Zeilen ab einer gewissen Größe umgebrochen werden, dann hast du ein reines Chaos von Ziffern im Feld und der Vergleich ist nicht mehr möglich.
    das ist also der Grund, warum ich die Zeilen zusammenhängend hätte.

    Danke
    hybernate5

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

    Also was auch immer der Fehler ist, er ist reproduzierbar.
    Ich habe mal eine Textbox erstellt und mit &= die Zahlen von 0-600 hintereinander weg geschreiben.

    Ich habe das gleiche Phänomen. Nach 1024 Zeichen wird "umgebrochen".

    Ich könnte mir vorstellen das liegt vielleicht daran das ein String mit Umbruch(multiline) ein String() ist.
    Wenn ich den gleichen Text auf ein Label schreibe wird der nicht umgebrochen.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    danke RodFromGermany,

    leider benutzen dieses blöde textFeld mindestens 100 andere Programme, mit denen ich keine Probleme hab und auch nicht somlange Zeilen.
    Da müsste ich alles umschreiben.
    Wenn du aber eine Idee hättest, wie ich es auf Knopfdruck machen könnte, wäre ich dabei.
    Definiere

    hybernate5 schrieb:

    benutzen ... mindestens 100 andere Programme
    Du wirst ja wohl keine Fernsteuerung anderer Programme machen. :P
    Also ich nehme mal an, dass es sich um einen Dialog in Deinem Programm handelt, der von sehr vielen Stellen zur Anzeige iwelcher Texte / Daten benutzt wird.
    Ich hab ein kleines Testprojekt gemacht, eine TextBox mit Deinen Vorgaben aus Post #1.
    Ich empfehle Dir, das nun folgende ebenfalls an einem neuen kleinen separaten Testprojekt zu üben.
    Dann also, streng nach Vorschrift, nix auslassen, nix dazudichten:
    • Mach von Deinem Projekt eine Sicherungskopie.
    • Öffne den Design-Code dieser Form:

    • Finde die zwei Zeilen, in der die TextBox deklariert und instanziiert wird:

      VB.NET-Quellcode

      1. Me.TextBox1 = New System.Windows.Forms.TextBox()
      2. '...
      3. Friend WithEvents TextBox1 As System.Windows.Forms.TextBox

    • Ändere diese beiden Zeilen so, dass eine RichTextBox deklariert und instanziiert wird:

      VB.NET-Quellcode

      1. Me.TextBox1 = New System.Windows.Forms.RichTextBox()
      2. '...
      3. Friend WithEvents TextBox1 As System.Windows.Forms.RichTextBox

    • Damit ist die Grundlage geschaffen.
      Der Compiler meckert sofort die ScrollBars-Property an:

      , lösch diese Zeile:

      VB.NET-Quellcode

      1. Me.TextBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both

    =====
    Jetzt bist Du (im Prinzip) fertig, Du hast die TextBox durch eine RichTextBox gleichen Namens ersetzt.
    Natürlich ist es möglich, dass in Deinem Code noch auf TextBox-Properties zugegriffen wird, die es bei einer RichTextBox nicht gibt.
    Lass Dir da vom Compiler helfen, das kann ich von hier aus nicht sehen (ich weiß, ich weiß, ich hätte meine Glaskugel schon vorige Woche von der Reparatur holen sollen :D ).
    Wenn Du nicht weiterkommst, frag einfach im Forum.
    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!