0

Microsoft 用の Windows API コード パックは、ここからダウンロードできます。それは本当に素晴らしいライブラリであり、素晴らしい例があります。たとえば、コード パックのダウンロードから zip に含まれているソリューション WindowsAPICodePack10 を開くと (これには、win フォームと wpf アプリケーションを追加したライブラリのみが含まれます)。

ここに画像の説明を入力

次に、ドラッグできるwpfアプリケーションなどで、ライブラリを非常に簡単に使用できます。

ここに画像の説明を入力

ExplorerBrowser ユーザー コントロール (ソリューションに付属のライブラリへの参照を追加する必要があることに注意してください)

次に、ボタンを使用して、次のコード行でそのコントロールを設定できます。

        // Create a new CommonOpenFileDialog to allow users to select a folder/library
        CommonOpenFileDialog cfd = new CommonOpenFileDialog();

        // Set options to allow libraries and non filesystem items to be selected
        cfd.IsFolderPicker = true;
        cfd.AllowNonFileSystemItems = true;

        // Show the dialog
        CommonFileDialogResult result = cfd.ShowDialog();

        // if the user didn't cancel
        if (result == CommonFileDialogResult.Ok)
        {
            // Update the location on the ExplorerBrowser
            ShellObject resultItem = cfd.FileAsShellObject;
            explorerBrowser1.NavigationTarget = resultItem;
            //explorerBrowser1.Navigate(resultItem);
        }

その後、私は次のようなものを持つことができます:

ここに画像の説明を入力

それは素晴らしいことですが、私は Microsoft を理解していません。それらのライブラリを提供する場合、そのユーザー コントロールを簡単にカスタマイズできるようにする必要があります。これらのライブラリをダウンロードした理由は、スタックパネルの特定のディレクトリからファイルを配置し、エクスプローラーのファイルで得られるのと同じ機能を持つ必要があるためです (ファイルをドラッグしたり、ファイルを右クリックしてコンテキストメニューを取得したり、ファイルをそのコンテナにドロップするなど)

とにかく、私はそのすべての機能を必要としません。ライブラリの研究から、ユーザーコントロールにはShellContainerオブジェクトが含まれており、その子はおそらくShellFilesであると思います。

このライブラリから ShellFile オブジェクトを作成し、それを StackPanel に配置します。ライブラリの退屈な勉強の後、私は最終的にshellFileからオブジェクトをインスタンス化する方法を見つけました(ShellFileクラスは抽象です):

string filename = @"C:\Program Files (x86)\FileZilla FTP Client\filezilla.exe"; \\random file
ShellFile shellFile = ShellFile.FromFilePath(filename);

そのファイルをコンテナに入れることができればいいのですが。ShellConteiner オブジェクトも抽象的であるため、インスタンス化できません。たとえば、そのシェルファイルをキャンバスに配置するにはどうすればよいですか?

または、必要なプロパティを抽出して、shellFile を表すユーザー コントロールを作成することもできます。私は次のようなことができるサムネイルを取得する方法を知っています:

        string filename = @"C:\Program Files (x86)\FileZilla FTP Client\filezilla.exe";

        ShellFile shellFile = ShellFile.FromFilePath(filename);
        System.Drawing.Bitmap btm = shellFile.Thumbnail.ExtraLargeBitmap;
4

0 に答える 0