2011-06-17 6 views
3

ネイティブファイルを開くダイアログをインポートして使用する方法は? WindowsフォームもWPFも使用しないアプリケーションでは、その利点がありますか?またはそれを参照するだけですか?ネイティブファイルを開く/保存ダイアログ(WindowsフォームまたはWPFなし)

+0

WinFormsやWPFでない場合、アプリケーションのGUI基盤とは何ですか?または、コンソールアプリケーションからダイアログを開こうとしていますか? –

+0

mOGRE(3Dアプリ)私は不必要な依存関係や負荷を避けたいだけです。 – newGuest

答えて

6

WinFormsとWPFが提供する標準のファイルダイアログは、ネイティブダイアログを囲む単なるラッパーです。したがって、これらの管理されたC#クラスを使用するのが最も理にかなっています。

何らかの方法でダイアログをカスタマイズする場合(たとえば、ダイアログをコントロールを追加する場合)、ネイティブAPIを使用する場合があります。しかしそれは主に、Vista/7用のものとは異なるXP用のカスタマイズテクニックを使用する必要があるためです。純粋なネイティブコードでも、ファイルダイアログをカスタマイズするのは簡単ではありません。

+2

私はWPF <4 *が間違った種類のオープン/セーブダイアログを表示しているかもしれないと思っていますが、質問を提起しました。私はWPF 4が正しいものを表示することを知っています。 – BoltClock

+0

@BoltClock WPF <4の場合、Vista/7のレガシーダイアログが表示されますか? –

+0

明らかにそうです。 WPFの初期の年代からのレポートとスクリーンショット(http://www.thomasclaudiushuber.com/blog/2008/04/12/vistas-savefiledialog-and-openfiledialog-in-wpf/)があります。回避策は、 'Microsoft.Win32'の代わりにWinForms名前空間のクラスを使用することでした。 – BoltClock

1

これは、アプリケーションで何をしているのかという問題です。 Windowsフォームを使用して作成されている場合は、System.Windows.Forms.OpenFileDialogを使用します。それはWPFを使用して書かれている場合はこちらを参照してください。 OpenDialog for WPF 何らかの特別な理由で、あなたはWin32 APIのに対して行かなければならない場合は、先に行くと、ここでGetOpenFileName関数をよく読んで: http://msdn.microsoft.com/en-us/library/ms646927%28v=vs.85%29.aspx

5

Windows API Code Packで共通ダイアログのラッパーがあります。 Vistaの前にリリースされたWindows FormsとWPFのいくつかのバージョンは、Vista(またはWindows 7)に「ああ、あなたが望んでいることを知っていることを引き起こしたダイアログを構築するときにいくつかのパラメータを使用して、ダイアログの新しいバージョンを踊っています。それ以来、サービスパック、新しいリリースなどがありました。何らかの理由で適切なダイアログが表示されない場合は、使用しているVisual Studioのどのバージョンのサービスパックでもインストールしてください。それでも満足できない場合は、Code Packをお試しください。

+0

Vista/7でレガシーファイルダイアログを表示するWPFダイアログが問題の場合は、アドバイスを+1し、管理対象ラッパーを最新の状態にしてください –

関連する問題