Я работаю над приложением Windows Form (C #), где пользователь вводит данные в форму. В любой момент при редактировании данных в форме пользователь может нажать одну из кнопок в форме, чтобы выполнить определенные действия. По умолчанию фокус переходит к нажатой кнопке, поэтому пользователь должен снова вернуться к элементу управления, который он хочет редактировать, чтобы продолжить изменение данных в форме. Что мне нужно сделать, это вернуть фокус к последнему отредактированному элементу управления после обработки события нажатия кнопки. Вот пример скриншота, который иллюстрирует то, о чем я говорю:
Пользователь может вводить данные в textbox1, textbox2, textbox3 и т. Д. И нажимать кнопку. Мне нужна кнопка, чтобы вернуть фокус обратно к элементу управления, на котором фокус был до того, как была нажата кнопка.
Мне интересно, есть ли у кого-нибудь способ реализовать эту функцию лучше, чем я придумал. Вот что я сейчас делаю:
public partial class Form1 : Form
{
Control _lastEnteredControl;
private void textBox_Enter(object sender, EventArgs e)
{
_lastEnteredControl = (Control)sender;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Do something here");
_lastEnteredControl.Focus();
}
}
Итак, в основном, здесь мы имеем переменную класса, которая указывает на последний введенный элемент управления. Каждое текстовое поле в форме настраивается, поэтому метод textBox_Enter запускается, когда элемент управления получает фокус. Затем при нажатии кнопки фокус возвращается к элементу управления, который имел фокус до нажатия кнопки. У кого-нибудь есть более изящные решения для этого?