我正在开发一个 Windows 窗体应用程序 (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 方法。然后,当单击按钮时,焦点将返回到单击按钮之前具有焦点的控件。有人对此有更优雅的解决方案吗?