Нет встроенного свойства или функциональности для отслеживания ранее сфокусированного элемента управления. Как вы упомянули, всякий раз, когда нажимается кнопка, она получает фокус. Если вы хотите отслеживать текстовое поле, которое было сфокусировано до этого, вам придется сделать это самостоятельно.
Один из способов сделать это - добавить переменную уровня класса в форму, которая содержит ссылку на текущий элемент управления textbox:
private Control _focusedControl;
А затем в событии GotFocus
для каждого из ваших элементов управления текстовым полем вы просто обновили бы переменную _focusedControl
этим текстовым полем:
private void TextBox_GotFocus(object sender, EventArgs e)
{
_focusedControl = (Control)sender;
}
Теперь, когда нажимается кнопка (почему вы используете событие MouseDown
, как показано в вашем вопросе вместо события Click
кнопки?), Вы можете использовать ссылку на ранее сфокусированный элемент управления textbox, который сохраняется в переменной уровня класса, как вам нравится:
private void button1_Click(object sender, EventArgs e)
{
if (_focusedControl != null)
{
//Change the color of the previously-focused textbox
_focusedControl.BackColor = Color.Red;
}
}