2012-03-26 65 views
2

私はMicrosoft.Win32.SaveFileDialogクラスを使用してファイルを保存しています。私はファイルを保存し、私のアプリを最小限に抑えると、私はそれを元に戻すことはできません。 Microsoft.Win32.SaveFileDialogを使用した場合にのみ発生します。ここにコードです:WPFのSaveFileDialogバグ

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); 
dlg.FileName = String.Format("{0} {1} {2}", ev["b"], ev["a"], ev["c"]); 
dlg.DefaultExt = ".csv"; 
dlg.Filter = "Supported format (.csv)|*.csv"; 
Nullable<bool> result = dlg.ShowDialog(); 
if (result == true) 
{ 
    string s = dlg.FileName; 
    //other code 
} 

ファイルは正常に保存されますが、私はどのように最小化の問題を解決するのか分かりません。誰でもそれが何であるかも知っていますか?

+1

信じられない... –

+1

'// other code'の背景は何ですか? –

+0

FileOKイベントまでつながる可能性があり、そこでエラーをキャッチすることができます。ちょうどリーチ。 – Paparazzi

答えて

3

親ウィンドウなしでダイアログを表示すると、WPFにはあらゆる種類の奇妙なモダリティの問題があります。私はこれをSaveFileDialogで直接見たことはありませんが、他のダイアログと同様の動作が見られました。親ウィンドウを渡す場所にある.ShowDialog()のオーバーロードを試してみてください。

+0

'親ウィンドウで渡すところの.ShowDialog()のオーバーロードを試してください.'、WinFormsに同じ問題と解決策がありました。 –

+0

私は試してみます、ありがとうございます! –

1

また、WPFとWin32 SaveFileDialog/OpenFileDialogで奇妙なモダリティの問題が発生しました。

は何が起こるか:

がモーダル状態に違反している
  • /完全に失われるとOpenFileDialogがShowDialogを()

は、それが起こるんで開かれている間、メインウィンドウをクリックすることができます。

  • OpenFileDialogが開く前にタスクが実行されていた
  • デバッガbrただ、ボタンクリックイベントで、簡単なWPFアプリケーションを作成するタスク

を実行する前に、ブレークポイントにeaks:

private void Button_Click(object sender, RoutedEventArgs e) 
    { // <-- Breakpoint sits here 

     Task.Run(() => {}).Wait(); 

     new Microsoft.Win32.OpenFileDialog().ShowDialog(); 
    } 

オーバーロードさShowDialog(Window owner)機能を使用するには、この問題を解決します。

関連する問題