0

これは、folderBrowserDialog1 で選択したディレクトリからすべてのディレクトリのすべてのファイルを一覧表示しますが、それらを listBox にロードすると、次のように listBox の項目が表示されます

C:\ユーザー\ユーザー名\デスクトップ\ファイル名.exe

C:\ユーザー\ユーザー名\デスクトップ\ファイル名.exe

C:\ユーザー\ユーザー名\デスクトップ\ファイル名.exe

など.. C:\users\username\desktop\ を削除して filename.exe だけを保持する方法はありますか

これが役立つかもしれない私のコードです。

private void DirSearch(string dir)
    {
        string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*", SearchOption.AllDirectories);

        foreach (var file in files)
        {
            ListBox2.Items.Add(file);
        }
    }
4

3 に答える 3

3

使用Path.GetFileName方法:

 ListBox2.Items.Add(Path.GetFileName(file));
于 2012-12-19T06:04:59.177 に答える
1

コメントから@Dennisまで、これは機能するはずです。

private void DirSearch(string dir)
    {
        string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*", SearchOption.AllDirectories);

        foreach (var file in files)
        {
            ListBox2.Items.Add(file.Replace(dir, string.empty);
        }
    }
于 2012-12-19T06:12:36.520 に答える
1

再帰的な方法を試す

private void Form1_Load(オブジェクト送信者, EventArgs e) {

        DirSearch(folderBrowserDialog1.SelectedPath);
    }
    private void DirSearch(string dir)
    {
        try
        {
            string userpath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            folderBrowserDialog1.ShowDialog();
            string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*", SearchOption.AllDirectories);
            if (!dir.Equals(userpath))
            {
                foreach (var file in files)
                {
                    listBox1.Items.Add(System.IO.Path.GetFileName(file));
                }
                IEnumerable<string> dirs = Directory.EnumerateDirectories(dir);
                foreach (string dsdir in dirs)
                {
                    DirSearch(dsdir);
                }
            }
        }
        catch (Exception ex)
        {
        }
    }
于 2012-12-19T06:19:24.707 に答える