2010-06-28 87 views
0

(C#/ WindowsMo​​bile的6)如何把 「一切形式」 到前臺(的WindowsMo​​bile/C#)

讓我們的應用程序有3種靜態形式:Form1上,窗體2,Form3,在Form1中打開窗體2通過調用窗體2。 Show()和Form2與Form3一樣。 Form2和Form3有一個「退出」按鈕,它隱藏了表單(不是「關閉」,只是隱藏)。

所以,我們執行下列步驟操作:

  • 打開應用程序;
  • 轉到Form2,通過單擊Form1上的「Form2」按鈕;
  • 轉到Form3,通過單擊Form2上的「Form3」按鈕;
  • 打開文件資源管理器,並通過點擊文件「重新打開」應用程序。 Form3出現;
  • 通過單擊Form3(this.Hide())上的「退出」按鈕隱藏Form3。這是問題:文件資源管理器出現,而不是Form2。

我不想在每次隱藏表單時調用「callingform」.Show()。這個「工作」,但文件瀏覽器屏幕出現在「this.Hide()」和「callinform.Show()」之前,我需要「控制」誰打電話給誰。

如何解決這個問題?有沒有辦法將所有應用程序的表單按照它們出現的順序放到前臺?

在此先感謝。

回答

0

真的是沒有辦法。你可以實現一個方法來存儲形式以類似的方式,以第一個答案,但是當你切換你需要做的:

"callingform".BringToFront(); 
"callingform".Show(); 

這將把您的所有形式的資源管理器的前面。

0

您可能需要對此進行一些調查,但除了我的頭頂,您可以嘗試查看Application.Forms []集合。

也許有人可以確認或否認這一點,但我想通常,Application.OpenForms [0]將是主要/初始形式與隨後的表單出現在Application.OpenForms [1],Application.OpenForms [2]等...

所以你可以簡單地嘗試向後瀏覽這個Forms集合。

喜歡的東西(或變化),

public void BringLastOpenedFormToFront() 
{ 
    if(Application.OpenForms.Count > 0) 
    { 
     Form form = Application.OpenForms[Application.OpenForms.Count - 1]; 
     BringToFront(form); // your bring to front method. 
    } 
} 

這將允許你以保證最後的Form似乎被帶到前面,並立即對用戶可見。讓我知道你是否需要任何澄清。

鏈接到MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.openforms.aspx

+0

CompactFramework(WindowsMo​​bile)不支持Application.OpenForms。不管怎麼說,還是要謝謝你。 – Christian 2010-06-29 11:44:45