Feedback

WinForms Label: Kein Kopieren ins Clipboard bei Doppelklick

Sprache: VB

Dem einen oder anderen ist es vielleicht noch nicht aufgefallen: Ein Doppelklick auf ein WinForms-Label kopiert den Label-Text ins Clipboard. Verschiedene bisher bekannte Lösungen wie das Überschreiben von WndProc oder Manipulation des Clipboard-Inhalts haben Nebeneffekte. Die folgende Lösung dagegen keine, zumindest so wie es aussieht. Einfach die Text-Eigenschaft überschreiben und den Text-Wert in einer eigenen Variable ablegen und NICHT auf die Text-Eigenschaft des Basis-Labels zugreifen (diese muss immer leer bleiben!). Bei einer Textänderung das Label refreshen und das TextChanged-Ereignis anschieben. Bei weiterem eigenem Code in einem abgeleiteten Label-Control darf natürlich ebenfalls nicht auf die Basis-Text-Eigenschaft zugegriffen werden.
Private mText As String

Public Overrides Property Text As String
    Get
        Return mText
    End Get
    Set(value As String)
        If mText <> value Then
            mText = value
            Me.Refresh()
            Me.OnTextChanged(EventArgs.Empty)
        End If
    End Set
End Property
Private mText As String

Public Overrides Property Text As String
    Get
        Return mText
    End Get
    Set(value As String)
        If mText <> value Then
            mText = value
            Me.Refresh()
            Me.OnTextChanged(EventArgs.Empty)
        End If
    End Set
End Property