0

基本的に私が達成しようとしているのは、表示されたリストからファイルを選択してそのファイルを開くことができるようにすることです。現在、選択したフォルダーに存在する .docx、.mov、および .txt ファイルを表示する CheckBoxList に設定しています。問題は、ファイルを開くことができないことです。私はほとんどの人が提案しているのを見てきました-

Process.Start(filename);

しかし、それに関する問題は、特定のファイル名が必要であり、変数からその名前を取得しようとしていることです。何か案は?
ここに私の現在のコードがあります -

private void Form1_Load(object sender, EventArgs e)
    {
        const string path = @"C:\Users\Haxelle\Documents\Journal";
        List<string> extensions = new List<string> { "DOCX", "MOV", "TXT" };

        string[] files = GetFilesWithExtensions(path, extensions);
        ckbEntry.Items.AddRange(files);
    }

    private string[] GetFilesWithExtensions(string path, List<string> extensions)
    {
        string[] allFilesInFolder = Directory.GetFiles(path);
        return allFilesInFolder.Where(f => extensions.Contains(f.ToUpper().Split('.').Last())).ToArray();
    }

    private void btnOpen_Click(object sender, EventArgs e)
    {
        CheckedListBox.CheckedItemCollection selectedFiles = ckbEntry.CheckedItems;


    }

btnOpen_Click でファイルを開こうとしています

4

1 に答える 1

1

不足しているのは、選択したファイル名を繰り返し処理して開くことだけのようです。CheckedItemCollection.Itemは として型指定されるためobject、アイテムをキャストする必要があります。これは、LINQ のCast関数を使用して実行できます。

private void btnOpen_Click(object sender, EventArgs e)
{
    CheckedListBox.CheckedItemCollection selectedFiles = ckbEntry.CheckedItems;
    foreach (var filename in selectedFiles.Cast<string>()) {
        Process.Start(filename);
    }
}
于 2015-07-28T04:50:50.993 に答える