여러 텍스트 상자와 콤보 상자가 포함 된 양식이 있습니다. 액티브 컨트롤의 하늘색 속성을 하늘색으로 설정했습니다. 모든 텍스트 상자 및 콤보 상자의 백 색을 흰색으로 설정하고 액티브하지 않습니다.비활성 컨트롤의 BackColor를 설정하는 방법
0
A
답변
1
올바른 방법이 있으며 잘못된 방법으로이 작업을 수행하려면입니다. 당신은 잘못된 길을 요구하고 있습니다. 올바른 방법은 TextBox에서 클래스를 파생시키고 OnEnter 및 OnLeave 메서드를 재정의하는 것입니다. ComboBox에 대해 반복하십시오.
하지만 잘못된 길을 물어 보면이 기능을 너무 늦게 추가하려고 할 것이므로 런타임에 컨트롤을 다시 찾아야합니다. 폼 클래스에 생성자를 추가하고 다음과 같이 만듭니다.
Public Sub New()
InitializeComponent()
FindControls(Me.Controls)
End Sub
Private Sub FindControls(ctls As Control.ControlCollection)
For Each ctl As Control In ctls
Dim match As Boolean
If TypeOf ctl Is TextBoxBase Then match = True
If TypeOf ctl Is ComboBox Then
Dim combo = DirectCast(ctl, ComboBox)
If combo.DropDownStyle <> ComboBoxStyle.DropDownList Then match = True
End If
If match Then
AddHandler ctl.Enter, AddressOf ControlEnter
AddHandler ctl.Leave, AddressOf ControlLeave
End If
FindControls(ctl.Controls)
Next
End Sub
Private controlColor As Color
Private Sub ControlEnter(sender As Object, e As EventArgs)
Dim ctl = DirectCast(sender, Control)
controlColor = ctl.BackColor
ctl.BackColor = Color.AliceBlue
End Sub
Private Sub ControlLeave(sender As Object, e As EventArgs)
Dim ctl = DirectCast(sender, Control)
ctl.BackColor = controlColor
End Sub
포커스가 설정되지 않았거나 사용 가능 = false로 설정되어 있습니까? – Monah