在c# WinForms中打开外部文件

本文关键字:外部 文件 WinForms | 更新日期: 2023-09-27 18:04:56

所以基本上我想要完成的是能够从显示的列表中选择一个文件并打开该文件。现在我在CheckBoxList中设置了它,该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中打开文件

在c# WinForms中打开外部文件

似乎您所缺少的只是遍历选定的文件名并打开它们。由于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);
    }
}