2011-12-28 46 views
0

我試圖在窗口2:如何強制重點兒童形態?

//... 

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

,然後在form3:

public partial class Form3 : Form 
    { 
     public Form2 _emailForm; 

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

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

,但形式不集中。有人可以指出我的錯誤?提前致謝。

+1

你到底想達到什麼目的?打開一個表單並關注它? – Matthias 2011-12-28 00:40:32

+0

從form2中打開form3,在form3中執行某些操作並將焦點放在form2上。 – user834697 2011-12-28 00:45:22

回答

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(...)內部。所以你不會注意到任何區別。不過,我認爲在Form對象上使用Show()Activate(),在Control對象上使用BringToFront()對象更常見,它們是其他對象的一部分。

+0

還有'_parent.BringToFront();'或者其他的東西。我不在我的電腦,所以沒有VS在這裏。嘗試intellisense找到它。一旦我回家,我會檢查一下。 – 2011-12-28 00:57:24

+0

確認窗體有一個BringToFront方法。 – 2011-12-28 03:19:02

0

如果你絕對希望用戶能夠利用Form1中再次使用.ShowDialog(),而不是.Show之前採取行動,窗體2()