Hintergrundfarbe aller Eingabe Boxen bei Enter andere Hintergrundfarbe

24/07/2009 - 16:32 von Berthold Bredenkamp | Report spam
Hallo Gruppe,

ich möchte die Farbe aller Eingabeelemente Text-, Combo-, Checkbo beim Event
"Enter" mit einer anderen Hintergrundfarbe anzeigen und beim Verlassen
wieder normal. Das aktive Feld soll so besser zu erkennen sein.
Ich kann es für jedes Feld manuell einrichten, doch der Aufwand ist recht
hoch. Gibt es da eine einfachere Möglichkeit?


Gruß

Berthold
 

Lesen sie die antworten

#1 Peter Götz
24/07/2009 - 17:37 | Warnen spam
Hallo Berhold,

ich möchte die Farbe aller Eingabeelemente Text-, Combo-,
Checkbo beim Event "Enter" mit einer anderen Hintergrundfarbe
anzeigen und beim Verlassen wieder normal. Das aktive Feld
soll so besser zu erkennen sein.



Dabei solltest Du bedenken, dass es viele Anwender gibt,
die eine Farbsehschwàche haben und deshalb darauf
angewiesen sind, entsprechende Farben selbst einstellen
zu können. Bei Checkboxen kommt hinzu, dass die
üblicherweise als BackColor die Farbe der umgebenden
Form bzw. des umgebenden Containers haben sollten.

Ich kann es für jedes Feld manuell einrichten, doch der
Aufwand ist recht hoch. Gibt es da eine einfachere
Möglichkeit?



Textboxen, ComboBoxen und CheckBoxen sind alle von
Control abgeleitet, weshalb es kein Problem ist, für alle
die Controls jeweils einen gemeinsamen Enter-Ereignis-
handler und einen Leave-Ereignishandler zu erstellen.

Hier ein kleines Beispiel.
Kopiere den Code einfach in einer leeres Formmodul
Form1.vb.

' /// Code in Form1.vb
Public Class Form1
Private WithEvents Textbox1 As TextBox
Private WithEvents ComboBox1 As ComboBox
Private WithEvents Checkbox1 As CheckBox

Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load

CreateControls()
End Sub


Private Sub Control_Enter _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles _
Textbox1.Enter, _
ComboBox1.Enter, _
Checkbox1.Enter

Dim C As Control = _
DirectCast(sender, Control)

C.BackColor = _
Color.FromKnownColor(KnownColor.Window)

End Sub

Private Sub Textbox1_Leave _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles _
Textbox1.Leave, _
ComboBox1.Leave, _
Checkbox1.Leave

Dim C As Control = _
DirectCast(sender, Control)

C.BackColor = _
Me.BackColor
End Sub

Private Sub CreateControls()
Textbox1 = New TextBox
ComboBox1 = New ComboBox
Checkbox1 = New CheckBox

With Textbox1
.Font = New Font("Arial", 12)
.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
.Height)

.Name = "Textbox1"
.Text = .Name
End With
Me.Controls.Add(Textbox1)

With ComboBox1
.Font = Textbox1.Font
.SetBounds _
(10, Textbox1.Bottom + 10, _
Textbox1.Width, .Height)

.Name = "ComboBox1"
.Text = .Name
End With
Me.Controls.Add(ComboBox1)

With Checkbox1
.Font = Textbox1.Font
.SetBounds _
(10, ComboBox1.Bottom + 10, _
Textbox1.Width, Textbox1.Height)

.Name = "CheckBox1"
.Text = .Name
End With
Me.Controls.Add(Checkbox1)

Dim i As Integer
For i = 1 To 12
ComboBox1.Items.Add _
(MonthName(i, False))
Next

For Each c As Control In Me.Controls
c.BackColor = Me.BackColor
Next
End Sub
End Class
' \\\ E N T E

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen