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.
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
- Public Class MultiLabel
- Inherits System.Windows.Forms.TextBox
- Public Shadows ReadOnly [ReadOnly] As Boolean = True
- Public Shadows ReadOnly MultiLine As Boolean = True
- Public Shadows ReadOnly CanSelect As Boolean = False
- Public Shadows ReadOnly BorderStyle As Windows.Forms.BorderStyle = Windows.Forms.BorderStyle.None
- Public Sub useParentsBackColor()
- If Not IsNothing(Me.Parent) Then Me.BackColor = Me.Parent.BackColor
- End Sub
- Private Declare Function HideCaret Lib "user32.dll" (ByVal hWnd As IntPtr) As Integer
- Private Sub Me_GotFocus(sender As Object, e As System.EventArgs) Handles MyBase.GotFocus
- HideCaret(Me.Handle.ToInt32)
- End Sub
- Private Sub Me_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
- Me.Select(0, 0)
- End Sub
- Public Sub New()
- MyBase.ReadOnly = True
- MyBase.Multiline = True
- Me.Text = "MultiLabel"
- MyBase.BorderStyle = Windows.Forms.BorderStyle.None
- Me.BackColor = Color.White
- Me.Select(0, 0)
- MyBase.Cursor = Cursors.Arrow
- End Sub
- End Class