Es gibt keine eingebaute Eigenschaft oder Funktionalität, um das zuvor fokussierte Steuerelement im Auge zu behalten. Wie Sie bereits erwähnt haben, wird der Fokus immer dann verwendet, wenn auf die Schaltfläche geklickt wird. Wenn Sie die zuvor fokussierte Textbox im Auge behalten möchten, müssen Sie dies selbst tun.
Ein Weg, um diesen zu gehen, wäre eine Variable auf Klassenebene zu Ihrem Formular hinzuzufügen, die einen Verweis auf die aktuell den Fokus Textbox Kontrolle hält:
private Control _focusedControl;
Und dann im GotFocus
Ereignisse für jedes Ihrer Textboxsteuerelemente, würden Sie nur aktualisieren, um den _focusedControl
Variable mit diesem Textfeld:
private void TextBox_GotFocus(object sender, EventArgs e)
{
_focusedControl = (Control)sender;
}
Nun, wenn eine Schaltfläche geklickt wird (warum verwenden Sie das MouseDown
Ereignis wie in Ihrer Frage an Stelle des butto gezeigt ? N der Click
Ereignis), können Sie den Verweis auf die zuvor konzentriert Textbox-Steuerelement verwenden können, die aber in der Klasse-Level-Variable gespeichert Sie mögen:
private void button1_Click(object sender, EventArgs e)
{
if (_focusedControl != null)
{
//Change the color of the previously-focused textbox
_focusedControl.BackColor = Color.Red;
}
}
Schaltfläche kann auch Fokus über Tab drücken. – 26071986