0

アプリケーションを実行する前にユーザーがパスを選択できるように、フォルダー ダイアログ ボックスを表示する必要があります。私はすべて正常に動作していますが、エラー MessageBox をフォアグラウンドに保つことができないようです。ユーザーが間違ったパスを選択すると、メッセージ ボックスがポップアップ表示されますが、デスクトップで開いているウィンドウの背後に表示されたままになります。

私はWPFを初めて使用します。このアプリケーションのwinformsバージョンでは、 fdb.ShowDialog(this) を指定でき、エラーメッセージボックスをフォアグラウンドに保持できます。しかし、WPF を使用すると、メッセージ ボックス ウィンドウは、開いている他のすべてのウィンドウの背後に常に表示されます。

これをどのように解決できるかについてのアイデアはありますか? ありがとう。

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

        }
    }
4

1 に答える 1

1

Window_Loadedコードをコンストラクターから呼び出すのではなく、イベントに移動します-

<Window Loaded="Window_Loaded"/>

コードビハインド -

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

コード実行がまだコンストラクターに渡されておらず、その間にエラーメッセージがポップアップするため、ウィンドウはまだロードされていません。そのため、ウィンドウが読み込まれると、メッセージ ボックスの上に表示されます。

于 2012-11-25T16:43:19.577 に答える