Datagridview Scrollbalken in Zelle

  • VB.NET
  • .NET 7–8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Datagridview Scrollbalken in Zelle

    Guten Morgen,
    in einem DGV sind die Zellen in einer TextBoxColumn doch eigentlich Textboxen. Und eine Textbox hat ja auch Scrollbalken. Wie kann man die zur Laufzeit sichtbar machen und benutzen?

    Hintergrund:
    Es gibt sehr lange Texte, die dem Anwender vollständig angezeigt werden müssen. Die Zellenhöhe ist dadurch mitunter höher als die Höhe des Grids. Beim Scrollen des Grids, welches natürlich Scrollbalken hat, erfolgt ein Sprung in die nächste Zeile, ohne dass man den Text in der "großen" Zelle bis zum Ende lesen kann. Da würden mir Scrollbalken in der Zelle jetzt aus der Patsche helfen.

    Ich habe versucht, ein pixelweises Scrollen zu realisieren. Aber das ist nur mit teurer Software von Drittanbietern möglich und scheint sehr aufwändig. Mit einem Tooltipp habe ich es auch nicht geschafft. Da gibt es kein WordWrap und scrollen kann man auch nicht. Wollte jetzt beim Klick in eine solche Zelle ein Fenster mit einer großen Textbox öffnen lassen, wo ich den Text hinein kopiere. Aber schön ist das nicht. Hat jemand eine Idee und kann mir behilflich sein? Danke.

    Viele Grüße
    Norbert
    DataGridViewTextBoxCells sind nicht generell dasselbe wie eine normale TextBox.
    Die Spalte mit solchen Texten würde ich nicht im DataGridView einbauen, sondern getrennt in einem eigenen Control. Bei Anwahl der Zeile wechselt das andere Control z.B. eine Textbox entsprechend der gewählten Zeile mit.

    Alternativ wenn du in die Textbox-Zelle hineinklickst kann du über die Pfeiltasten scrollen. Setzt aber voraus, dass die editierbar wäre.
    Leider klappt das nicht so, wie ich es mir vorgestellt habe. Ich bekomme den Text nicht mit Linefeeds in die Textbox.
    Der Originaltext, den ich ins Grid geladen habe (2.png)
    Im Grid sieht es so aus (1.png)

    Wenn ich daraus einen String mache:
    Dim s As String = CStr(DGV2.CurrentCell.Value)
    sieht der im VS so aus (3.png)

    So hätte ich es gern in der TextBox, aber das geht irgendwie nicht
    fBig.tbMax.Text = s (4.png)

    Bin ratlos ...


    Habs zu spät gelesen. Danke.
    in einem eigenen Control

    Welches Contrrol schlägst Du vor?
    Ich müsste die ganze Oberfläche neu machen und das wäre viel Arbeit. Vielleicht hast Du einen Tipp mit der Textbox? Wenn das leicht zu lösen wäre, würde das reichen.

    Alternativ wenn du in die Textbox-Zelle hineinklickst kann du über die Pfeiltasten scrollen. Setzt aber voraus, dass die editierbar wäre.

    Mit den Cusortasten hatte ichs schon versucht. Aber das ging auch nicht. Allerdings ist alles noch auf Readonly (danke für den Hinweis). Muss ich das für das geamte DGV oder nur für eine bestimmte Column ausschalten? Hab so meine Probleme mit der Vererbung (Überschreiben der Props) im Grid.

    Edit:
    Hab die Zellen editierbar bekommen (ReadOnly=False, EditMode ein). Aber jetzt gibt es keine LineFeeds mehr in der Zelle :cursing:



    Hab statt der TextBox ein Label genommen. Da sieht der Text gut aus. Aber da gibt es keine Scrollbalken. Es ist zum Verzweifeln ...



    Will nicht werden.
    Wie kann man mit diesem Text (text.txt) eine Textbox füllen, so dass der Inhalt dann so aussieht (3.png) und man scrollen kann? Was muss man replacen oder ergänzen?

    Beiträge zusammengefügt. ~Thunderbolt
    Bilder
    • 1.png

      55,78 kB, 674×623, 78 mal angesehen
    • 2.png

      24,81 kB, 773×173, 76 mal angesehen
    • 3.png

      41,03 kB, 920×538, 25 mal angesehen
    • 4.png

      46,22 kB, 723×281, 24 mal angesehen
    • 3.png

      41,03 kB, 920×538, 25 mal angesehen
    Dateien
    • text.txt

      (4,56 kB, 24 mal heruntergeladen, zuletzt: )

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

    strzata schrieb:

    So hätte ich es gern in der TextBox, aber das geht irgendwie nicht
    fBig.tbMax.Text = s

    probierma einen Textersatz (Replace)

    VB.NET-Quellcode

    1. fBig.tbMax.Text = s.Replace(microsoft.Visualbasic.controlchars.Lf,microsoft.Visualbasic.controlchars.CrLf)

    Oder nimm eine Richtextbox.
    Hintergrund: Es gibt zwei verschiedene Zeichen(ketten), die in einem Text den Umbruch bedeuten. Textbox "versteht" nur CrLf.
    Hallo, schön Dich wieder hier zu haben :thumbup:
    Danke für die Antwort. Ich versuchs nachher mit ner RTB.

    Aber hier muss ich mal was grundsätzliches fragen. Ich habe in unserer Software generell alles was Basic ist verbannt. Es gibt nur astreinen .Net-Code. Obwohl vieles mit Basic einfacher gewesen wäre, hab mich mich immer so lange rumgequält, bis ich die Pendants zu .Net gefunden hatte. Ein CrLf würde mit meinen VS-Einstellungen gar nicht gehen. Bei meinen hunderten von Textboxen habe ich sowas nie verwendet. Es ging immer mit Environment.Newline.

    Gibts nicht vielleicht doch bei meinem Problem etwas in .Net? Was ist mit Convert.ToChar? Und warum stellt ein Label alles richtig dar und eine Textbox nicht?



    Problem gelöst. RichTextBox macht alles so, wie es ein sollte.
    Danke an alle!

    Beiträge zusammengefügt. ~Thunderbolt

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

    Haudruferzappeltnoch schrieb:

    Und Environment.NewLine ist nur Lf.

    Nicht bei mir. Win10/11
    Bilder
    • NewLine.png

      18,65 kB, 620×121, 24 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.