Forum: VB.NET |
Thema:
.: Inheritance - Custum UserControl :. |
Von:
Daniel Röber (
14.11.2005 14:13) |
Salve,
nun ist es mal wieder an der Zeit mich von Wissendenen unterstützen zu lassen.
Folgendes Grundproblem:
Controls welche enabled = false gesetzt sind, werden gray hinterlegt, mit grauer schrift ... sehr schlecht zu lesen.
Ich habe mir nun einige Controls zur Brust genommen, vererbt (TextBox, CheckBox, ComboBox, etc) und die Property Enabled umgeschrieben.
Setze ich die Property Enabled = False at RunTime, so funktioniert da alles wunderbar, Hintergundfarbe ändert sich, TextFarbe ändert sich ..etc.
Sind diese Controls allerdings in einer GroupBox und ich setze die GroupBox.Enabled Property = False - so wird die meine Shadows Enabled Property komplett übergangen ...
Ich habe versucht die GroupBox umzuschreiben (ohne Erfolg), die Hintergrundfarbe der Controls ändert sich im Höchstfall, der Rest bleibt beim Default-Behavior.
Mit dem OnPoaint vent hab ich auch rumgespielt, bei jedem Control einzeln, aber das hat auch nur bedingt funktioniert ...
*KopfKratz*
Lnge Rede kurzer Sinn, kann mir hier jemand von den Gurus weiterhelfen?
Der Code für die TextBox:
Option Strict On
Imports System.ComponentModel
Public Class ShapeTextBox
Inherits TextBox
#Region " Declarations "
Private _BackColorDisabled As Color = Color.White
Private _ForeColorDisabled As Color = Color.FromArgb(64, 64, 64)
Private _Enabled As Boolean = True
#End Region
<Browsable(True), _
Category("Appearance"), _
Description("The foreground color used to display text when the control is disabled")> _
Public Property ForeColorDisabled() As Color
Get
Return Me._ForeColorDisabled
End Get
Set(ByVal Value As Color)
Me._ForeColorDisabled = Value
End Set
End Property
<Browsable(True), _
Category("Appearance"), _
Description("The background color used to display text when the control is disabled")> _
Public Property BackColorDisabled() As Color
Get
Return Me._BackColorDisabled
End Get
Set(ByVal Value As Color)
Me._BackColorDisabled = Value
End Set
End Property
Public Shadows Property Enabled() As Boolean
Get
Return _Enabled
End Get
Set(ByVal Value As Boolean)
'Keeps the current Back/Fore color
Static _BackColor As System.Drawing.Color
Static _ForeColor As System.Drawing.Color
Static _TabStop As Boolean
If _BackColor.IsEmpty Then
_BackColor = Me.BackColor
_ForeColor = Me.ForeColor
_TabStop = Me.TabStop
End If
'Stop looping in itself
Static _IsProcessing As Boolean
If _IsProcessing = True Then Exit Property
_IsProcessing = True
Me._Enabled = Value
If Me._Enabled = True Then
Me.BackColor = _BackColor
Me.ForeColor = _ForeColor
Me.ContextMenu = Nothing
Me.TabStop = _TabStop
Else
Me.BackColor = Me._BackColorDisabled
Me.ForeColor = Me._ForeColorDisabled
Me.ContextMenu = Nothing
Me.TabStop = False
End If
Me.Invalidate()
_IsProcessing = False
End Set
End Property
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
If Not Me._Enabled = True AndAlso _
(e.KeyCode = Keys.Up OrElse _
e.KeyCode = Keys.Down OrElse _
e.KeyCode = Keys.Delete) Then
e.Handled = True
Else
MyBase.OnKeyDown(e)
End If
End Sub
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Not Me._Enabled = True Then
e.Handled = True
Else
MyBase.OnKeyPress(e)
End If
End Sub
End Class
Betreff |
Von |
Datum |
|
  |
Re: .: Inheritance - Custum UserControl :.
Hallo Daniel,<br><br>versuche doch einmal die Methode OnParentEnabledChanged zu über schreiben.<br>In der Methode kannst du Abfragen ober das Parent Control enabled ist und dann automatische deine eigens... |
 |
 |
 |
|
|
Ansgar
Sommer
|
14.11.2005 17:15 |
|
  |
Re: .: Inheritance - Custum UserControl :.
Salve Ansgar,<br><br>danke erstmal für den Tip mit den OnParentEnabledChanged - ich wusste nichtmal das es diese Methode gibt (ups).<br>Ich habe dieses Methode mit Overrides überschrieben, allerdings nur... |
 |
 |
 |
|
|
Daniel
Röber
|
17.11.2005 08:42 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!