|
2019/03/05(Tue) 17:36:33 編集(投稿者)
■No90379 (としぞー さん) に返信 > 初めまして。DelphiからC#へ移行しつつある者です。 > Delphiでは、 > TDriveComboBox > TDirectoryListBox > TFileListBox > というコンポーネントがあり、これらをフォームに配置しますと、 > ドライブ、フォルダを指定後、選択したファイルの名前をフルパスで取得できます。 > (エクスプローラと似た感じです)
Windows 3.1 時代のコモンダイアログが、そんなインターフェイスでしたね。
Delphi アプリが手元に無いので確認できませんが、 この場合 UNC パスのもの、たとえば @"\\server\shared\folder1\folder2\fileName.txt" のようなファイル指定は行えないのでしょうか?
> これと同じようなコントロールがC#に見当たらないのですが、何か手立てはないでしょうか。
参照設定で「Microsoft.VisualBasic.Compatibility」アセンブリを加えれば、 Microsoft.VisualBasic.Compatibility.VB6 名前空間にある DriveListBox DirListBox FileListBox のコントロールをフォームに貼って使うことができます。 (設計の古い Obsolete なクラスなので、非推奨ではありますが)
> 色々検索して、以下のサイトを参考にしてエクスプローラ風の表示はできたのですが、 > 選択したファイル名を取得する方法が分からず・・・ Windows API CodePack の Microsoft.WindowsAPICodePack.Controls.WindowsForms.ExplorerBrowser クラスでも良ければ:
// using Microsoft.WindowsAPICodePack.Shell; private void Form1_Load(object sender, EventArgs e) { explorerBrowser1.Navigate(ShellObject.FromParsingName(@"C:\")); }
private void explorerBrowser1_SelectionChanged(object sender, EventArgs e) { List<ShellObject> items = explorerBrowser1.SelectedItems.ToList(); string[] pathList = items.Where(x => x.IsFileSystemObject).Select(x => x.GetDisplayName(DisplayNameType.FileSystemPath)).ToArray();
listBox1.DataSource = pathList; }
|