Multiline Label

    • VB.NET

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

      Multiline Label

      Hi,

      ich brauchte letztens für ein Projekt ein Label, dass sich über mehrere Zeilen erstreckt und habe mir dafür eine eigene Klasse geschrieben.

      Die Klasse ist an sich nichts anderes als eine Textbox. Nur dass BorderStyle konstant auf None, ReadOnly auf True, MultiLine auf True und CanSelect auf False gesetzt sind. Außerdem wird kein Caret angezeigt und der Text kann nicht markiert werden.

      Mit der Methode useParentsBackColor kann zudem die Hintergrundfarbe an die Hintergrundfarbe des übergeordneten Controls angepasst werden. Leider kann sich diese nicht automatisch anpassen.

      Wenn ihr Kritik, Verbesserungs- oder Erweiterungsvorschläge habt, immer her damit. :)

      VB.NET-Quellcode

      1. Public Class MultiLabel
      2. Inherits System.Windows.Forms.TextBox
      3. Public Shadows ReadOnly [ReadOnly] As Boolean = True
      4. Public Shadows ReadOnly MultiLine As Boolean = True
      5. Public Shadows ReadOnly CanSelect As Boolean = False
      6. Public Shadows ReadOnly BorderStyle As Windows.Forms.BorderStyle = Windows.Forms.BorderStyle.None
      7. Public Sub useParentsBackColor()
      8. If Not IsNothing(Me.Parent) Then Me.BackColor = Me.Parent.BackColor
      9. End Sub
      10. Private Declare Function HideCaret Lib "user32.dll" (ByVal hWnd As IntPtr) As Integer
      11. Private Sub Me_GotFocus(sender As Object, e As System.EventArgs) Handles MyBase.GotFocus
      12. HideCaret(Me.Handle.ToInt32)
      13. End Sub
      14. Private Sub Me_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
      15. Me.Select(0, 0)
      16. End Sub
      17. Public Sub New()
      18. MyBase.ReadOnly = True
      19. MyBase.Multiline = True
      20. Me.Text = "MultiLabel"
      21. MyBase.BorderStyle = Windows.Forms.BorderStyle.None
      22. Me.BackColor = Color.White
      23. Me.Select(0, 0)
      24. MyBase.Cursor = Cursors.Arrow
      25. End Sub
      26. End Class
      lblSomeText.Text = "Ein bischen Text" + Environment.NewLine + "Text der nächsten Zeile"
      lblSomeText ist ein Label
      Ich Antworte nach bestem Wissen und Gewissen. Ich übernehme keine Garantie für die Richtigkeit oder Fehlerfreiheit meiner Texte.


      Ich konnte dir helfen?
      - Das ist schön :) Ich würde mich über ein "Hilfreich" freuen ^^

      ponmalka schrieb:

      wenn ich das mal vorher gewusst hätte :D
      Hinterher ist man immer schlauer :thumbsup:
      Ich Antworte nach bestem Wissen und Gewissen. Ich übernehme keine Garantie für die Richtigkeit oder Fehlerfreiheit meiner Texte.


      Ich konnte dir helfen?
      - Das ist schön :) Ich würde mich über ein "Hilfreich" freuen ^^