No existe una propiedad o funcionalidad incorporada para realizar un seguimiento del control enfocado anteriormente. Como mencionó, cada vez que se hace clic en el botón, tomará el foco. Si desea realizar un seguimiento del cuadro de texto que se enfocó antes de eso, tendrá que hacerlo usted mismo.
Una manera de ir sobre esto sería añadir una variable de nivel de clase a su formulario que contiene una referencia al control de cuadro de texto centrado actualmente:
private Control _focusedControl;
Y luego, en el caso GotFocus
para cada uno de sus controles de cuadro de texto, que se acaba de actualizar la variable _focusedControl
con ese cuadro de texto:
private void TextBox_GotFocus(object sender, EventArgs e)
{
_focusedControl = (Control)sender;
}
Ahora, cada vez que se hace clic en un botón (¿por qué utiliza el evento MouseDown
como se muestra en su pregunta en lugar de la butto ? Click
caso de n), puede utilizar la referencia al control de cuadro de texto centrado previamente que se guarda en la variable de nivel de clase como usted quiera:
private void button1_Click(object sender, EventArgs e)
{
if (_focusedControl != null)
{
//Change the color of the previously-focused textbox
_focusedControl.BackColor = Color.Red;
}
}
El botón también puede obtener el enfoque a través de la tecla Tab presiona. – 26071986