2011-12-28 12 views
0

私はForm2の中でそれを試してみました:どのように子供のフォームのフォーカスを強制するには?

public partial class Form3 : Form 
    { 
     public Form2 _emailForm; 

     public Form3 (Form2 emailForm) 
     { 
      _emailForm = emailForm; 
      InitializeComponent(); 
     } 

    public void foo() 
     { 
      _emailForm.ForceFocus(); 
      this.Close(); 
     } 
} 

が、フォームがフォーカスされていません。たForm3で

//... 

    var form3 = new Form3(this); 

         if (System.Windows.Forms.Application.OpenForms[form3.Name] == null) 
         { 
          form3.Show(); 
         } 
         else 
         { 
          System.Windows.Forms.Application.OpenForms[form3.Name].Focus(); 
         } 

してから。誰かが私のエラーを指摘することができますか?前もって感謝します。

+1

あなたが達成しようとしていますか?フォームを開いてそれに焦点を当てるか? – Matthias

+0

form2からform3を開き、form3で何かを行い、form2にフォーカスします。 – user834697

答えて

0

あなたはこのようにそれを簡素化することができます:私はそれはあなたの質問に答える願ってい

public Form1(Form parent) 
{ 
    InitializeComponent(); 
    _parent = parent; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (_parent != null) 
     _parent.Focus(); 
} 

。それ以外の場合は、コメントを残してください。

EDIT

Show()BringToFront()社内SafeNativeMethods.ShowWindow(...)を使用しています。だからあなたは何の違いに気付かないでしょう。しかし、オブジェクトではShow()または、その他のControlオブジェクトではControlオブジェクトではBringToFront()であることが一般的だと思います。あなたは絶対に、ユーザが前Form1が再び.ShowDialog()の代わりに、.SHOWを使う利用することができることにForm2の中で行動を取りたい場合は

+0

'_parent.BringToFront();'またはそれに近いものもあります。私のパソコンではないので、ここにはVSがありません。それを見つけるためにintellisenseを試してください。私は家に帰るとそれをチェックします。 –

+0

確認フォームのBringToFrontメソッドがあります。 –

関連する問題