salve ragazzi,
apro questo topic perchè ho un dilemma da risolvere...
provo a spiegarmi e a fare qualche esempio:
ho necessità di impostare il colore di BackGround di alcune ComboBox e TextBox, quando disabilitate devono avere lo stesso colore di BackGround come il loro contenitore (nel mio caso il contenitore è un Form)
ho creato tutto il codice affichè possa gestire questa cosa (comprese TextBox presenti) e tutto sembrava funzionare fino a quando ho dovuto cambiare il colore di BackGround del Form da "Control" (Default) a un colore diverso, per esempio "Grey".
praticamente le combobox non prendono il colore giusto del form..
vi posto due immagini di una prova che sto facendo, per rendere meglio lo scenario di quando abilitate e quando disabilitate.

praticamente le textbox assumono il colore del form mentre le combobox no
questo è il codice che sto usando per effettuare la prova:
codice:
,
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each C As Control In Me.Controls
If {"TextBox", "ComboBox"}.Contains(C.GetType.Name) Then _
AddHandler C.EnabledChanged, AddressOf Controlli_EnabledChanged
Next
End Sub
Private Sub Controlli_EnabledChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
With sender
Dim Abilitato As Boolean = .Enabled
Select Case .GetType.Name
Case "TextBox"
.borderstyle = IIf(Abilitato, BorderStyle.Fixed3D, BorderStyle.FixedSingle)
.BackColor = IIf(Abilitato, Color.White, .Parent.BackColor)
Case "ComboBox"
.DropDownStyle = IIf(Abilitato, ComboBoxStyle.DropDownList, ComboBoxStyle.Simple)
.flatstyle = IIf(Abilitato, FlatStyle.Popup, FlatStyle.Standard)
.BackColor = IIf(Abilitato, Color.White, .parent.BackColor)
End Select
End With
End Sub
Private Sub Abilita_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Abilita.Click
For Each C As Control In Me.Controls
If {"TextBox", "ComboBox"}.Contains(C.GetType.Name) Then C.Enabled = True
Next
End Sub
Private Sub Disabilita_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Disabilita.Click
For Each C As Control In Me.Controls
If {"TextBox", "ComboBox"}.Contains(C.GetType.Name) Then C.Enabled = False
Next
End Sub
End Class
chi mi può spiegare questo fenomeno e magari una dritta?