在 C# WinForms 中打开外部文件
Opening outside files in C# WinForms
所以基本上我想要完成的是能够 select 显示列表中的文件并打开该文件。现在,我在 CheckBoxList 中设置了它,该列表显示存在于 selected 文件夹中的 .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
中的文件
看来您所缺少的只是遍历选定的文件名并打开它们。由于 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);
}
}
所以基本上我想要完成的是能够 select 显示列表中的文件并打开该文件。现在,我在 CheckBoxList 中设置了它,该列表显示存在于 selected 文件夹中的 .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
中的文件看来您所缺少的只是遍历选定的文件名并打开它们。由于 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);
}
}