У меня есть форма, содержащая несколько текстовых и комбинированных ящиков. Я установил свойство back color активного элемента управления для skyblue. Я хочу установить задний цвет всех текстовых полей и comboboxes на белый, пока они не активны.Как установить BackColor неактивного элемента управления
ответ
Есть правильный путь и неправильный путь. Вы просите неправильного пути. Правильный способ - вывести свой собственный класс из 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
Недостаточно просто добавить обработчики событий для событий 'Enter' и' Leave' для элементов управления, которые мы хотим, без получения элементов управления и без 'FindControl'? В конструкторе, например, – Fabio
Конечно. Это склонный к ошибкам способ. –
Извините, почему он подвержен ошибкам. Какие недостатки этим способом (за исключением одного: нужно добавить обработчики событий для каждой формы в проекте, если вы хотите одинакового поведения во всех формах)). – Fabio
- 1. Изменить BackColor элемента управления ToolStripSeparator
- 2. Как я могу предотвратить изменение свойства BackColor элемента управления?
- 3. Как установить backcolor элемента управления на желаемый элемент управления в C#?
- 4. Как изменить backcolor управления на фокусе
- 5. Как я могу программно найти Backcolor элемента управления DateTimePicker
- 6. Переключение управления backColor fast
- 7. ListBox SystemColor для неактивного элемента?
- 8. Как установить цвет неактивного вклада для BottomBar
- 9. Панель BackColor устанавливает цвет ее элементов управления
- 10. Установить панель backcolor when hover
- 11. CallByName, set BackColor
- 12. Как установить атрибут стиля пользовательского элемента управления?
- 13. Как установить положение пользовательского элемента управления
- 14. Как установить Content-Type элемента управления Webbrowser?
- 15. Как установить шрифт элемента управления Unicode?
- 16. Как установить содержимое элемента управления ASPxImageZoom?
- 17. Как установить datacontext пользовательского элемента управления
- 18. как установить первый lookAt/target элемента управления
- 19. Как установить значение внутри элемента управления
- 20. Как установить значение для элемента управления DateTimePicker?
- 21. Как установить стиль вложенного элемента управления?
- 22. Как установить BackColor из CheckBox в WPF
- 23. Как установить систему Backcolor по умолчанию?
- 24. Как установить метки BackColor в VB.Net
- 25. Как установить ListViewSubItem BackColor в Windows Mobile?
- 26. Как установить DataGridViewButtonCell BackColor с помощью htmlColor?
- 27. Проверка наличия у дочернего элемента его BackColor, установленного пользователем
- 28. Как установить встроенный стиль элемента body элемента управления RadEditor
- 29. Переключить текст неактивного элемента с помощью jQuery
- 30. Update BackColor управления в Desing времени
Вы имеете в виду неактивное, как не сфокусированное или включенное = false? – Monah