Forums Neueste Beiträge
 

Label mit farbigen Rand

25/08/2007 - 13:42 von Wolfgang Kalteis | Report spam
Hallo,
ich bràuchte Labels mit farbigen Ràndern (BorderStyle = FixedSingle). Leider
gibt es keine BorderColor beim Label. Brauche aber die
Label-Funktionalitàten.

Mit einem vererbten Steuerelement von Label müßte es doch gehen. Aber wie?
Hier endet mein Wissen. Codebeispiel wàre Super.

mfg
 

Lesen sie die antworten

#1 Karsten Sosna
26/08/2007 - 08:31 | Warnen spam
ich bràuchte Labels mit farbigen Ràndern (BorderStyle = FixedSingle).
Leider
gibt es keine BorderColor beim Label. Brauche aber die
Label-Funktionalitàten.

Mit einem vererbten Steuerelement von Label müßte es doch gehen. Aber wie?



Hallo Wolfgang,
nein geht nicht. Das Label besitzt genauso wie bspw. ein Formular einen
Client-Bereich. In diesem Bereich kann man zeichnen. Was nicht zum
Client-Bereich gehört ist z.B. der Rand und genau den müsstest Du
"übermalen" und das geht nicht. Den dieser Rand wird AFAIK von Windows
gezeichnet.
Das Einzige was geht, ist wenn Du ein neues Control erstellst, was die
Funktionalitàt nachstellt. Das Zeichnen des Textes ist nicht das Problem,
das kannst Du spielend mit StringFormat erledigen. Auch das Verhalten mit
den Zugriffstasten sollte nicht das Problem. Dazu brauchst Du nur
ProcessMnemonic überschreiben, die Auswertung kannst Du mittels
Control.IsMnemonic machen. Passt das, reichst Du den Focus einfach weiter.
Für CanFocus und CanSelect kann man das hier benutzen:

Für CanSelect musst Du das in den Controlstyles angeben.
\\\
Public Sub New()
Me.SetStyle(ControlStyles.Selectable, False)
End Sub
///

Für CanFous das Property überschatten und den Focus bei Erhalt
weiterreichen:
\\\
Public Sub New()
Me.TabStop = False
End Sub

Public Shadows ReadOnly Property CanFocus() As Boolean
Get
Return False
End Get
End Property

Private Sub MyControl_GotFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.GotFocus
Me.Parent.SelectNextControl(Me, True, True, True, True)
End Sub
///
Achso noch mal Zugriffstasten. Damit der Unterstrich gezeichnet musst Du
HotkeyPrefix beim StringFormat auf True setzen:
\\\
Protected Overrides Sub OnPaint(ByVal e As
System.Windows.Forms.PaintEventArgs)
'MyBase.OnPaint(e)
Dim sf As New StringFormat
sf.HotkeyPrefix = Drawing.Text.HotkeyPrefix.Show
e.Graphics.DrawString("&Hello", Me.Font, Brushes.Black, 0, 0, sf)
End Sub
///
So ich glaube jetzt habe ich alles.
Gruß Scotty

Ähnliche fragen