【发布时间】:2026-02-16 11:00:02
【问题描述】:
所以我在制作应用程序(或一般的 GUI 程序)方面非常陌生,但我觉得我可以接受这个挑战,因为我非常擅长 Python 和 VBA。我正在尝试使用在 C# 和 xaml 中运行的 Windows 8 应用程序为我的大学制作可视化日程表生成器应用程序。所有课程的数据都被分割成 .csv 文件,每个部门一个,以便于搜索。这些文件将包含在应用程序本身的资产中,因为我现在不想弄清楚如何远程托管数据(除非这会使这项任务更容易)。
我无法将这些文件中的数据提取到我的应用程序中。在我的应用程序中,我目前正在处理两个组合框。一个用于部门,一个用于该部门内的课程,例如机械工程特定课程的 MECH 2202。我希望当为 MECH 选择第一个组合时,第二个组合填充该部门中所有不同的课程代码,这些代码位于单个 .csv 文件中。稍后选择课程代码时将使用更多详细信息,因为每个部分都有几个部分,但稍后可以弄清楚。
用于测试的相关 xaml 如下。第二个框中的数字只是暂时的。
<ComboBox x:Name="departmentCombo" HorizontalAlignment="Center" Margin="0" Grid.Row="1" VerticalAlignment="Center" Width="100" Height="40" MaxDropDownHeight="400" SelectionChanged="DepartmentChange">
<ComboBoxItem Content="BIOE"/>
<ComboBoxItem Content="CIVL"/>
<ComboBoxItem Content="ECE"/>
<ComboBoxItem Content="ENG"/>
<ComboBoxItem Content="MECH"/>
</ComboBox>
<ComboBox x:Name="courseCombo" HorizontalAlignment="Center" Margin="0" Grid.Row="1" VerticalAlignment="Center" Width="100" Height="40" MaxDropDownHeight="400">
<ComboBoxItem Content="2012"/>
<ComboBoxItem Content="2202"/>
<ComboBoxItem Content="3542"/>
<ComboBoxItem Content="3582"/>
<ComboBoxItem Content="3980"/>
</ComboBox>
例如,所有机械工程课程都位于应用资产中名为“Course List_MECH.csv”的单个 .csv 文件中。数据结构如下:
department,course_code,[several other non-relevant fields]
到目前为止,在选择部门后,我的 C# 代码是这样的:
private void DepartmentChange(object sender, SelectionChangedEventArgs e)
{
ComboBoxItem typeItem = (ComboBoxItem)departmentCombo.SelectedItem;
string department_str = typeItem.Content.ToString();
testText.Text = department_str;
///broken
var reader = new StreamReader(File.OpenRead(@"C:\test.csv"));
List<string> listA = new List<string>();
List<string> listB = new List<string>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(';');
listA.Add(values[0]);
listB.Add(values[1]);
}
}
此代码的第一部分用于提取所选部门并进入测试文本块以确保其正常工作。所以我在格式化文件名以找到正确的部门文件时不会有任何问题。问题是评论被破坏并且不起作用之后的一切。我从Reading CSV file and storing values into an array 中提取了这篇文章。我在 C# 方面不够熟练,无法理解为什么它甚至没有编译。它说“当前上下文中不存在名称'文件'”。一旦我将所有课程代码放入一个数组中,我确信我可以毫不费力地让它填充第二个组合框,它将数据放入那些我无法弄清楚的数组(或列表可能更好)中.
任何帮助将不胜感激。我已经搜索了这个问题的答案,但我得到的任何东西都不足以让我理解 C# 的新手并且没有代码 sn-ps 起作用。
【问题讨论】:
-
如果你尝试过: var reader = new StreamReader("C:\test.csv");它还会给你错误吗?
标签: c# wpf xaml csv windows-8.1