フォーム コントロールのフォーカスに問題があります。
form1 で、ボタンをクリックして以下のコードを実行します。
private void btnTest_Click(object sender, System.EventArgs e)
{
form2 = new Form2();
Application.Idle += new EventHandler(Application_Idle);
form2.Show();
form2.Activate();
form2.textBox1.Focus();
Form3 form3 = new Form3();
form3.ShowDialog();
}
次に、この CLR の後、イベント Application_Idle を実行します。このイベントで、textBox2 コントロールにフォーカスする必要があるメソッドを追加します。
private void Application_Idle(object sender, EventArgs e)
{
form2.textBox2.Focus();
form2.textBox2.Select();
form2.textBox2.Focus();
Application.Idle -= new EventHandler(Application_Idle);
}
しかし、form1 のボタンをクリックすると、Form2 が表示され、Form3 が表示され、次にApplication_Idle
メソッドが発生しますが、form2.textBox2
コントロールはフォーカスされません...
行をコメントアウトするとform3.ShowDialog();
問題なく動作しますが、フォーム要素を別のフォームアクティベーションでフォーカスするにはどうすればよいですか?( form3.ShowDialog()
) ?
追記: 問題は、厳密なアーキテクチャを持っていることと、変更できるのは Application_Idle メソッドだけであることです。