RadioButton.Enabeld

12/05/2009 - 08:37 von Werner Kistner | Report spam
Hallo,
wenn ich einen einzelnen Radiobutton Enabled=False setze wird das Symbol
inaktiv und der Text Grau dargestellt. Wenn ich das Ganze in einer Groupbox
darstellen will, wird nur das Symbol inaktiv der Text jedoch in Schwarz
dargestellt. Gibt es dafür eine Lösung oder ist das ein Bug?
Besten Dank
Werner
 

Lesen sie die antworten

#1 Peter Götz
12/05/2009 - 09:51 | Warnen spam
Hallo Werner,

wenn ich einen einzelnen Radiobutton Enabled=False setze
wird das Symbol inaktiv und der Text Grau dargestellt.



Ja, das ist sozusagen Windiows-Standard.

Wenn ich das Ganze in einer Groupbox darstellen will, wird
nur das Symbol inaktiv der Text jedoch in Schwarz dargestellt.



Auch das ist richtig und so gewollte.

Gibt es dafür eine Lösung oder ist das ein Bug?



Nein, das ist kein Bug.
Es eröffnet eben die Möglichkeit, die Farbe der
Beschriftungen von Controls in einer GroupBox
unabhàngig von deren Zustand Enabled frei zu
gestalten. Wàre ja denkbar, dass man trotz
GBox.Enabled = False die Beschriftung irgend-
welcher Controls in der GBox nicht eingegraut
haben will.

Wenn Du eine starre Koppelung zwischen
GroupBox.Enabled und RadioButton.Enabled haben
willst und dabei auch die Beschriftung der in der
GroupBox befindlichen Controls zwischen normal und
eingegraut wechseln willst, kannst Du das im
Programmcode z.B. so realisieren:

' /// Code in einem leeren Formmodul (Form1.vb)
Public Class Form1

Private WithEvents GBox As GroupBox
Private RB1 As RadioButton
Private RB2 As RadioButton
Private WithEvents ChBox As CheckBox

Private Sub GBox_EnabledChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles GBox.EnabledChanged

Dim C As Control
For Each C In GBox.Controls
C.Enabled = GBox.Enabled
If GBox.Enabled Then

C.ForeColor = _
Color.FromKnownColor(KnownColor.ControlText)
Else

C.ForeColor = _
Color.FromKnownColor(KnownColor.GrayText)
End If
Next
End Sub

Private Sub ChBox_CheckedChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles ChBox.CheckedChanged

GBox.Enabled = ChBox.Checked
End Sub

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

CreateControls()
End Sub


Private Sub CreateControls()
' Controls erzeugen
Dim Fnt As Font = New Font("Arial", 10)
GBox = New GroupBox
With GBox
.SetBounds(10, 10, 170, 100)
.Text = "GBox"
.Font = Fnt
End With
Me.Controls.Add(GBox)

RB1 = New RadioButton
With RB1
.AutoSize = True
.Font = Fnt
.Location = New Point(10, 25)
.Text = "RB 1"
.Checked = True
End With
GBox.Controls.Add(RB1)

RB2 = New RadioButton
With RB2
.AutoSize = True
.Font = Fnt
.Location = New Point(10, RB1.Bottom + 10)
.Text = "RB 2"
End With
GBox.Controls.Add(RB2)


ChBox = New CheckBox
With ChBox
.Checked = True
.Font = Fnt
.AutoSize = True
.Location = New Point(20, GBox.Bottom + 10)
.Text = "Enable GBox"
End With
Me.Controls.Add(ChBox)

Me.ClientSize = _
New Size _
(GBox.Right + 10, _
ChBox.Bottom + 10)

Me.FormBorderStyle = _
Windows.Forms.FormBorderStyle.Fixed3D
End Sub
End Class
' \\\ E N T E

Nach dem Programmstart kannst Du mit der Checkbox
"GBox Enable" den Zugriff auf die in der GroupBox (GBox)
befindlichen Controls steuern.
Bei jedem Wechsel von GBox.Enabled wird das Ereignis
GBox_EnabledChanged ausgelöst und dort werden in
einer Schleife alle in der Groupbox befindlichen Controls
durchlaufen und entsprechend eingestellt.

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

Ähnliche fragen