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(@"フォルダのパス"));
でナビゲートすることになります。
戻るボタンと進むボタンの実装は以下となります。
ここから先は
¥ 300
この記事が気に入ったらサポートをしてみませんか?