見出し画像

C# フォーム内にエクスプローラーを表示コントロールする

C#(Windowsフォームアプリ .NET 8.0)で「Microsoft-WindowsAPICodePack-Shell」を使ったエクスプローラーブラウザコントロールを実装します。大変心苦しいのですが戻る・進む操作の実装は有料とさせていただいております。何卒ご了承ください。

読者層としては、初心者~中級者を考えています。
なお、Windows10、11どちらでも動作確認しております。

開発環境

  • Visual Studio 2022

  • Windows 11 Pro 23H2(メイン)

  • Windows 10 Home 22H2(サブ)

NuGet パッケージ

  • Microsoft-WindowsAPICodePack-Shell (バージョン 1.1.5)

手順

「プロジェクト(P)」→「NuGetパッケージの管理(N) …」→「参照」タブをクリックして検索フォームから「Microsoft-WindowsAPICodePack-Shell」を検索しインストールします。

※「WindowsAPICodePack-Shell」ではありませんので注意してください。

ツールボックスに「ExplorerBrowser」が追加されています。
これをフォームへ配置します。
explorerBrowser1というコントロールが生成されますのでプロパティの雷マークのイベントからNavigationCompleteを探してダブルクリックしexplorerBrowser1_NavigationCompleteを生成しておいてください。

テストアプリとして上のような簡単なデザインにしました。
label1には実行ファイル名、label2にはエクスプローラーで表示しているパス、button1は戻るボタン、button2は進むボタンです。
サンプルコードは下の通りです。

private void Form1_Load(object sender, EventArgs e)
{
    // フォームのテキストを実行ファイル名にする
    var asm = System.Reflection.Assembly.GetExecutingAssembly();    // 実行中のアセンブリを取得します
    var asmName = asm.GetName();                                    // アセンブリから名前(AssemblyName)を取得します
    Text = "";                      // フォームのテキストを非表示(テキスト無し)にする
    ShowIcon = false;               // フォーム右上のアイコンを非表示にする
    label1.Text = asmName.Name;     // ファイル名をフォームのテキストに設定

    // ExplorerBrowserControl
    // エクスプローラーで任意のパスを表示する
    explorerBrowser1.Navigate(ShellFileSystemFolder.FromFolderPath(@"C:\Users\ユーザー名\source\repos\KTA Test App1"));

    // ボタンの設定
    button1.Enabled = false;        // button1(戻るボタン)を無効化
    button2.Enabled = false;        // button2(進むボタン)を無効化
}
private void explorerBrowser1_NavigationComplete(object sender, Microsoft.WindowsAPICodePack.Controls.NavigationCompleteEventArgs e)
{
    // label2(パスを表示するラベル)にナビゲートしたパスを表示する
    label2.Text = e.NewLocation.ParsingName;
}

ExplorerBrowserでは任意のパスへナビゲートするには、
explorerBrowser1.Navigate(ShellFileSystemFolder.FromFolderPath(@"フォルダのパス"));
でナビゲートすることになります。

戻るボタンと進むボタンの実装は以下となります。

ここから先は

2,088字 / 3画像 / 1ファイル

¥ 300

この記事が気に入ったらサポートをしてみませんか?