2011-10-20 15 views
4

C#でOpenFileDialogと同じ機能(いくつかの拡張機能を含む)を持つユーザーコントロールを作成するにはどうすればよいですか?私はthisに続きましたが、私の問題の解決策を見つけることができませんでした。C#でカスタマイズしたオープンファイルダイアログを作成する方法

私の要件は、ダイアログに余分なボタンを追加することです。そのボタンがクリックされると、okcancelのボタンと同じ方法で親に通知する必要があります。

+0

何を使用していますか? Winforms? WPF? ASP.NET? MVC? Silverlight? –

+0

@Kyle Trauberman:Winforms .... –

答えて

1

OpenFileDialogは、Windowsに組み込まれている機能です(これは非.NETです)。拡張することはそれほど重要な作業ではありません。なぜあなたはそれを最初から構築するのではなく、既存のソリューションを探してみませんか?

2

​​は、sealedクラスであり、継承または拡張できません。最善の策は、あなた自身の開いているファイルダイアログを書くことです。

一方、FileDialogクラスは封印されていないので、それを継承して必要なカスタマイズを行うことができます。詳細については、http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspxを参照してください。

1

これを実現するには、ほとんどの場合、未処理のWindowsインターフェイスを使用する必要があります。高レベルでこれを行います:

  1. IFileOpenDialogのインスタンスを作成します。
  2. IFileDialogCustomizeインターフェイスへの参照を問い合わせます。
  3. AddPushButtonメソッドを使用してボタンを追加します。
  4. IFileOpenDialogインターフェイスのAdviseを呼び出して、イベントを処理するインターフェイスを登録します。そのインターフェイスはIFileDialogControlEventsであり、あなたによって実装されています。そのインターフェイスとIFileDialogEventsの両方を実装する必要があります。
  5. ボタンを押すと、IFileDialogControlEvents.OnButtonClickedメソッドが呼び出されます。

これはVistaでのみ利用できます。 XPをサポートする必要がある場合は、GetOpenFileNameを使用して、カスタマイズ用のリソーステンプレートを提供する必要があります。それはまったく楽しいことではありません。特にマネージコードから! C++/CLIライブラリを使用すると、これを管理しやすくなります。

関連する問題