Я разрабатываю форму окна, в которой содержится столько элементов управления. Я хочу изменить цвет заднего фона этого активного элемента управления на Focus & обратно к своему первоначальному цвету, когда он потерял фокус. Я вижу This Ссылка, которая дает решение для написания кода для каждого элемента управления в форме. - любое решение для написания общей функции, которая находит текущий активный элемент управления в форме &, меняет цвет.Как изменить backcolor управления на фокусе
0
A
ответ
2
В виде конструктора можно назначить GotFocus
и LostFocus
обработчиков событий для каждого элемента управления вашей формы, как это:
foreach (Control ctrl in this.Controls)
{
ctrl.GotFocus += ctrl_GotFocus;
ctrl.LostFocus += ctrl_LostFocus;
}
А потом в методе обработчиков сделать некоторые логики вокруг сосредоточены BackColor элемента управления (например, на GotFocus сохранить ток BackColor в теге элемента управления, а затем установить BackColor к красному, на LostFocus восстановить первоначальный BackColor из тега элемента управления):
void ctrl_LostFocus(object sender, EventArgs e)
{
var ctrl = sender as Control;
if (ctrl.Tag is Color)
ctrl.BackColor = (Color)ctrl.Tag;
}
void ctrl_GotFocus(object sender, EventArgs e)
{
var ctrl = sender as Control;
ctrl.Tag = ctrl.BackColor;
ctrl.BackColor = Color.Red;
}
0
Я пишу метод расширения и использовать так:
this.textBox1.HookFocusChangeBackColor(Color.Blue);
Способ выдвижение:
public static class ControlExtension
{
public static void HookFocusChangeBackColor(this Control ctrl, Color focusBackColor)
{
var originalColor = ctrl.BackColor;
var gotFocusHandler = new EventHandler((sender, e) =>
{
(ctrl as Control).BackColor = focusBackColor;
});
var lostFocusHandler = new EventHandler((sender, e) =>
{
(ctrl as Control).BackColor = originalColor;
});
ctrl.GotFocus -= gotFocusHandler;
ctrl.GotFocus += gotFocusHandler;
ctrl.LostFocus -= lostFocusHandler;
ctrl.LostFocus += lostFocusHandler;
}
}
Реализовать обработчик событий и изменить цвет элемента управления. вы можете назначить этот обработчик событий более чем одному элементу управления. я рекомендую реализовать Got и LostFocus (или, тем не менее, это называется) Eventhandler – Jens