DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

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!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG