ユーザーがフォームにデータを入力する Windows フォーム アプリケーション (C#) に取り組んでいます。フォームのデータを編集している間はいつでも、ユーザーはフォーム上のボタンの 1 つをクリックして特定のアクションを実行できます。デフォルトでは、フォーカスはクリックされたボタンに移動するため、ユーザーはフォーム上のデータの変更を続けるために、編集するコントロールにクリックし直す必要があります。私ができる必要があるのは、ボタン クリック イベントが処理された後、最後に編集されたコントロールにフォーカスを戻すことです。私が話していることを示すスクリーンショットの例を次に示します。
ユーザーは、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 メソッドが起動されるように設定されています。次に、ボタンがクリックされると、ボタンがクリックされる前にフォーカスを持っていたコントロールにフォーカスが戻されます。これに対するよりエレガントなソリューションはありますか?