0

所以基本上我想要完成的是能够从显示的列表中选择一个文件并打开该文件。现在我将它设置在一个 CheckBoxList 中,显示所选文件夹中存在的 .docx、.mov 和 .txt 文件。问题是我无法打开文件。我看到大多数人建议-

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 回答