C#でOpenFileDialogと同じ機能(いくつかの拡張機能を含む)を持つユーザーコントロールを作成するにはどうすればよいですか?私はthisに続きましたが、私の問題の解決策を見つけることができませんでした。C#でカスタマイズしたオープンファイルダイアログを作成する方法
私の要件は、ダイアログに余分なボタンを追加することです。そのボタンがクリックされると、ok
とcancel
のボタンと同じ方法で親に通知する必要があります。
C#でOpenFileDialogと同じ機能(いくつかの拡張機能を含む)を持つユーザーコントロールを作成するにはどうすればよいですか?私はthisに続きましたが、私の問題の解決策を見つけることができませんでした。C#でカスタマイズしたオープンファイルダイアログを作成する方法
私の要件は、ダイアログに余分なボタンを追加することです。そのボタンがクリックされると、ok
とcancel
のボタンと同じ方法で親に通知する必要があります。
OpenFileDialog
は、Windowsに組み込まれている機能です(これは非.NETです)。拡張することはそれほど重要な作業ではありません。なぜあなたはそれを最初から構築するのではなく、既存のソリューションを探してみませんか?
は、sealed
クラスであり、継承または拡張できません。最善の策は、あなた自身の開いているファイルダイアログを書くことです。
一方、FileDialog
クラスは封印されていないので、それを継承して必要なカスタマイズを行うことができます。詳細については、http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspxを参照してください。
これを実現するには、ほとんどの場合、未処理のWindowsインターフェイスを使用する必要があります。高レベルでこれを行います:
IFileOpenDialog
のインスタンスを作成します。IFileDialogCustomize
インターフェイスへの参照を問い合わせます。AddPushButton
メソッドを使用してボタンを追加します。IFileOpenDialog
インターフェイスのAdvise
を呼び出して、イベントを処理するインターフェイスを登録します。そのインターフェイスはIFileDialogControlEvents
であり、あなたによって実装されています。そのインターフェイスとIFileDialogEvents
の両方を実装する必要があります。IFileDialogControlEvents.OnButtonClicked
メソッドが呼び出されます。これはVistaでのみ利用できます。 XPをサポートする必要がある場合は、GetOpenFileName
を使用して、カスタマイズ用のリソーステンプレートを提供する必要があります。それはまったく楽しいことではありません。特にマネージコードから! C++/CLIライブラリを使用すると、これを管理しやすくなります。
何を使用していますか? Winforms? WPF? ASP.NET? MVC? Silverlight? –
@Kyle Trauberman:Winforms .... –