私はユーザーがフォームにデータを入力しているWindowsフォームアプリケーション(C#)に取り組んでいます。フォーム内のデータを編集している間は、フォーム上のいずれかのボタンをクリックして特定の操作を実行できます。デフォルトでは、フォーカスはクリックされたボタンに移動するので、フォーム上のデータの変更を続けるために、編集したいコントロールに戻る必要があります。私ができることが必要なのは、ボタンのクリックイベントが処理された後、最後に編集されたコントロールにフォーカスを戻すことです。ユーザーはなどのTextBox1、TextBox2を、textbox3、にデータを入力することができますwinformアプリケーションでボタンをクリックした後、最後に使用したコントロールにフォーカスを戻すにはどうすればよいですか?
、ボタンをクリックしてください:ここで私が話しているものを示すサンプルのスクリーンショットです。私は、ボタンがクリックされる前に、フォーカスが最後にフォーカスを持っていたコントロールに戻すためのボタンが必要です。
誰かが私が思い付いたよりもこの機能を実装する優れた方法を持っているのだろうかと思います。ここで私が今やっているものです:
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メソッドが起動されるように設定されています。次に、ボタンがクリックされると、ボタンがクリックされる前にフォーカスを持っているコントロールにフォーカスが戻されます。誰もこれ以上の優雅なソリューションを持っていますか?
再帰が必要です。 – SLaks