有關我的previous question。C#窗口頂部沒有打開
在我之前的問題中,我問爲什麼我的對話似乎在其他窗口後面打開。 (其他窗口不一定屬於我的程序,例如Excel,Windows資源管理器等)
我被告知使用重載的ShowDialog()
並傳遞父參數。
這很好,我已經有過載全部換成ShowDialog的()秒。
但是我仍然在這裏度過了同樣的問題:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog(); // First dialog
// Do some stuff here...
SaveFileDialog sfd = new SaveFileDialog();
sfd.ShowDialog(); // Second dialog;
}
}
在這個例子中(不要在代碼註釋 - 我只是寫它作爲一個簡單的例子),在用戶雙擊可執行文件他們的屏幕上有幾個窗口。 OFD出現在頂部,並且SFD出現在一切之下。
我通常有這種OFD/SFD在我的其中接受CSV或XLS文件,並做他們的一些簡單處理簡單的程序設置。在這種情況下,我將OFD代碼放在靜態Main()方法中,如果沒有參數傳遞給exe,則加載對話框。
不對話需要父窗口中顯示?你在這裏沒有任何窗戶,所以你不應該期望一切都會像你所期望的那樣。 – 2011-05-30 02:13:58
http://stackoverflow.com/questions/4666580/how-can-i-set-topmost-at-the-savefiledialog-using-c/4709536#4709536你有沒有試過這個? :) – Vimvq1987 2011-05-30 03:06:40
我認爲你需要Application.Run作爲一個保持消息泵之間的形式。否則,當第一個表單退出並停止處理消息時,您將失去焦點。 – hsmiths 2011-05-30 03:14:31