2011-12-11 10 views
7

フォームのフォーカスを強制するにはどうすればよいですか? .Focus()は私のために働いていません。フォームフォーカスを強制するには?

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     form.Focus(); 
    } 
} 

私は間違っていますか?

答えて

6

それは

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(); 
    } 
} 
+0

私のために働いていない。フォームが最小化され、button1をクリックすると、フォームはアクティブ化されません(フォーカスが置かれます)。 – Jack

+0

申し訳ありませんが、あなたは編集を見ましたか?どちらを試しましたか?選択()またはフォーカス()? –

+0

は問題なく動作します。ありがとう!しかし、好奇心によって、なぜ 'form'変数への参照が機能しないのでしょうか? – Jack

14

あなたが最初のフォームを表示する必要がある - 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(); 
    } 
} 

フォームが最小化されている場合は、購読する必要がありますFormWindowState.Normalにあなたのウィンドウの状態を変更するためにActivatedイベントになる:

private void loginForm_Activated(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Normal; 
} 
+0

rigth、私は私の実際のコードをしてくださいチェック、編集しました。 :) – Jack

8

これを試してみてくださいする必要があります:

this.BringToFront(); 
this.Activate(); 
関連する問題