フォームのフォーカスを強制するにはどうすればよいですか? .Focus()
が機能しません。
private void button1_Click(object sender, EventArgs e) {
var form = new loginForm();
if (Application.OpenForms[form.Name] == null) {
form.Show();
} else {
form.Focus();
}
}
何が悪いのですか?
そのはず
private void button1_Click(object sender, EventArgs e) {
var form = new loginForm();
if (Application.OpenForms[form.Name] == null) {
form.Show();
} else {
Application.OpenForms[form.Name].Focus();
}
}
最初にフォームを表示する必要があります- Show()
メソッドを使用します:
_var form = new loginForm();
form.Show();
_
編集:(更新された質問)
既存のフォームが Activate()
を呼び出す方が適切な場合があります。これにより、フォームが前面に表示されます。
_private void button1_Click(object sender, EventArgs e)
{
var form = new loginForm();
if (Application.OpenForms[form.Name] == null)
{
form.Show();
}
else
{
Application.OpenForms[form.Name].Activate();
}
}
_
フォームが最小化されている場合は、Activated
イベントをサブスクライブして、ウィンドウの状態を_FormWindowState.Normal
_に変更する必要があります。
_private void loginForm_Activated(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
}
_
これを試して:
this.BringToFront();
this.Activate();
追加するフォームの開始時に
this.BringToFront(); this.Activate();
以前の答えはどれもうまくいきませんでしたが、これはうまくいきました:
protected override void OnShown(EventArgs e)
{
Focus();
}
このイベントの前に呼び出された場合、フォーカスメソッドは機能しませんでした。それが役に立てば幸い。