Hilfe bei UserControl

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

Es gibt 52 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    @Amelie Ohne System.ComponentModel und ohne Overrides, aber mit anderen Namen der Properties:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class UserControl1
    2. Private lblhight As Integer
    3. Private lineStop As Integer
    4. Private LineColor As Color
    5. Public Sub New()
    6. InitializeComponent()
    7. LineColor = Label1.ForeColor
    8. Label1.BackColor = Color.Transparent
    9. MyForeColor = Color.Red
    10. End Sub
    11. Public Property MyText As String
    12. Get
    13. Return Me.Label1.Text
    14. End Get
    15. Set(value As String)
    16. Me.Label1.Text = value
    17. End Set
    18. End Property
    19. Public Property ColorLine As Color
    20. Get
    21. Return LineColor
    22. End Get
    23. Set(value As Color)
    24. LineColor = value
    25. Invalidate()
    26. End Set
    27. End Property
    28. Public Property MyForeColor As Color
    29. Get
    30. Return Label1.ForeColor
    31. End Get
    32. Set(value As Color)
    33. Label1.ForeColor = value
    34. Label1.Invalidate()
    35. End Set
    36. End Property
    37. Protected Overrides Sub OnPaint(e As PaintEventArgs)
    38. MyBase.OnPaint(e)
    39. lblhight = Label1.Height - 3
    40. lineStop = Label1.Width + 5
    41. e.Graphics.Clear(BackColor)
    42. Using pen As Pen = New Pen(LineColor, 2)
    43. e.Graphics.DrawLine(pen, 0, lblhight, lineStop, lblhight)
    44. End Using
    45. Me.Height = Label1.Height + 6
    46. Me.Width = lineStop + 3
    47. End Sub
    48. End Class
    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!
    Kleinigkeit: lblhight -> lblheight
    Und statt lineStop = Label1.Width + 5 -> lineStop = CInt(e.Graphics.MeasureString(Label1.Text, Label1.Font).Width)
    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.
    @VaporiZed

    ​lineStop = CInt(e.Graphics.MeasureString(Label1.Text, Label1.Font).Width)


    Soetwas suche ich für die Höhe, weil ich gemerkt habe, das der Abstand Linie zu Label ja nach Schrift-Font und Size stark variiert. Oder gibts da etwas besseres um einen genaueren Abstand zu erhalten??
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    @Amelie
    :huh:
    Na 3x darfste raten. Ich korrigiere: 1x darfste schlussfolgern. Richtig: Du nimmst e.Graphics.MeasureString(Label1.Text, Label1.Font).Height, um die Höhe zu bekommen, die der Text mit der aktuellen Schriftart benötigt.
    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.
    @VaporiZed

    Das habe ich versucht doch scheinbar schwankt das zu sehr oder es schaut auf meinem Monitor nur so aus.???

    @ErfinderDesRades
    Ich schließe den dann, wenn ich soweit bin. Meine Überlegungen laufen ja parallel.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Amelie schrieb:

    Das habe ich versucht doch scheinbar schwankt das zu sehr oder es schaut auf meinem Monitor nur so aus.???
    Was ganz genau willst Du denn erreichen?
    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!
    Das es bei jeder Schrift-Font und Size in etwas so ausschaut wie auf meinem Bildbeispiel.
    Kleines bissel tiefer sehe ich gerade ;)
    Bilder
    • Label-1.jpg

      48,1 kB, 410×144, 26 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Wie Du siehst, ist das p ausschlaggebend für die Verschiebung nach unten. Klar. Woher soll das Programm auch wissen, dass es den p-Strich nach unten ignorieren soll? Da wirst Du immer Besonderheiten bei irgendwelchen Schriftarten finden, die nicht ins Raster passen. Musst Du mal recherchieren, wie das z.B. in Schreibprogrammen gelöst wird.
    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.
    @Amelie So was:

    VB.NET-Quellcode

    1. Protected Overrides Sub OnPaint(e As PaintEventArgs)
    2. MyBase.OnPaint(e)
    3. Dim lineStop = Label1.Width + 5
    4. e.Graphics.Clear(BackColor)
    5. Dim y = Label1.Location.Y + Label1.Height
    6. Using pen As Pen = New Pen(LineColor, 2)
    7. 'e.Graphics.DrawLine(pen, 0, lblhight, lineStop, lblhight)
    8. e.Graphics.DrawLine(pen, 0, y, lineStop, y)
    9. End Using
    10. Me.Height = Label1.Height + 6
    11. Me.Width = lineStop + 3
    12. End Sub
    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!
    wie geschrieben: irgendwas findet man sicherlich immer …
    auch mit Deinem Codevorschlag, RfG
    Bilder
    • Einspruch.png

      31,57 kB, 830×454, 27 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.
    Hier mal verschieden Fonts und Größen. Mit ein bissel Anpassung des Codes von @RodFromGermany schauts ganz gut aus.
    Daneben Worddokument... hmmm ;)
    Bilder
    • Label-12.jpg

      95,27 kB, 610×229, 24 mal angesehen
    • Label-12Word.jpg

      139,79 kB, 477×549, 23 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh: