Text in Textbox-control "klebt" zu weit oben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von dive26.

    Text in Textbox-control "klebt" zu weit oben

    Hallo Leute,

    ich verwende ganz normale Textbox_Controls und irgendwie "kleben" die Texte zu weit oben (siehe Screenshot). Die müssten um 1-2 Pixel weiter runter.
    Die Höhe der Textbox in der IDE lässt sich nicht ändern, da diese immer von der Schriftart abhängig ist.
    Habe ich da irgendwas übersehen? Padding gibt es bei Textboxen ja scheinbar nicht.
    Bilder
    • 04102018104121.jpg

      9,49 kB, 300×27, 95 mal angesehen
    • 04102018132256.jpg

      217,16 kB, 519×951, 75 mal angesehen
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    ErfinderDesRades schrieb:

    vlt. hilft dir die .TextAlign - Property


    Da gibt es leider nur left, right und center. Aber kein vertical-align wie bei anderen Steuerelementen.
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Da hätte ich ein kleines WorkAround. Mach eine eigene TextBox. Setz Multiline auf true, dann kannst du die Höhe ändern, überschreibe OnTextChanged und ersetze ggf. Zeilenumbrüche. So solltest du das recht einfach die Schrift in die Mitte bekommen. Wenn Zeilenumbrüche ersetzt wurden, noch das Caret nach hinten bringen. Du kannst noch mit der FontSize ein wenig spielen, wenn dir die TextBox dann zu klein ist.

    VB.NET-Quellcode

    1. Public Class TB
    2. Inherits TextBox
    3. Public Sub New()
    4. Multiline = True
    5. End Sub
    6. Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    7. If Text.Contains(Environment.NewLine) Then
    8. Text = Text.Replace(Environment.NewLine, "")
    9. [Select](Text.Length, 0) 'damit der cursor wieder hinten ist
    10. End If
    11. MyBase.OnTextChanged(e)
    12. End Sub
    13. End Class

    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

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

    Danke für Eure Antworten.

    Das mit dem Workaround mit "Multiline" ist leider nicht machbar, da die Felder dann auch mehrere Zeilen annehmen (was Sie aber nicht sollen). Und überall einen Zeilenumbruch abzufangen ist auch eine unnötige Arbeit.

    Aber ich habe die Lösung bereits gefunden - die ist einfacher als gedacht:

    Der Optik halber hatte ich die Border der Textboxen ursprünglich alle auf "Fixed Single" gestellt.
    Bei "3D" passt die vertikale Ausrichtung des Textes in der Box, bei "Fixed Single" aber nicht.

    Nun habe ich zu meiner Freude festsgestellt, dass es unter Windows 10 optisch für die Rahmen keinen Unterschied macht ob Fixed Single oder 3D. Die Rahmen sehen alle gleich aus. Nur unter Windows 7 habe ich wirklich 3D Textfelder. Aber das stribt sowieso irgendwann und daher "wurscht". ;)
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at