2012-11-25 29 views
0

我需要顯示一個文件夾對話框,以便用戶可以在我的應用程序運行之前選擇一個路徑。我有一切工作正常,但我似乎無法保持在前臺的錯誤MessageBox。如果用戶選擇了錯誤的路徑,會彈出一個消息框,但它將保留在桌面上任何打開的窗口後面的背景中。我可以指定fdb.ShowDialog(this),它會保持錯誤消息框的前景。我是新來的WPF,與此應用程序的Winforms版本,我可以指定fdb.ShowDialog(this),它會保持錯誤消息框在前臺。但對於WPF,消息框窗口始終保持在所有其他打開的窗口後面。如何在WPF的前臺保留一個MessageBox窗口

關於如何解決這個問題的任何想法?謝謝。

while (!found) 
    { 
     if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      if ((File.Exists(Path.Combine(fbd.SelectedPath, "user.exe")))) 
       return fbd.SelectedPath; 
      else     
       System.Windows.Forms.MessageBox.Show("Cannot find user.exe in the selected path! Please try again.", "File Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); 

     } 
    } 
+0

你把上面的代碼放在Window/UserControl的構造函數中嗎? –

+0

@ RV1987不在構造函數中,它是從主窗口構造函數調用的方法「GetUserPath()」的一部分。我測試了構造函數中的所有代碼,但MessageBox行爲沒有任何變化。 –

+0

是的,這是因爲你是從構造函數調用代碼,直到沒有創建時間窗口。一旦代碼通過您的構造函數,窗口就會被加載。 –

回答

1

移動你的代碼Window_Loaded事件,而不是從構造函數中調用它 -

<Window Loaded="Window_Loaded"/> 

後面的代碼 -

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    // Your code here 
} 

,因爲尚未加載代碼執行避風港你的窗口還沒有通過構造函數,同時彈出錯誤消息。所以,一旦窗口被加載,它會通過消息框。

+0

解決了這個問題!感謝您的幫助!我顯然需要更多的WPF練習! –

+0

很高興幫助.. :) –

相關問題