c# - 如何搜索文件并将其显示在列表框中?
问题描述
我被 C# 项目卡住了,我不知道如何解决它。我有一个文本文件“cars.txt”,它包含以下信息:
1950
日产 Sentra
福特福克斯
1951
马自达 5 马自达
3
丰田
1952
雪佛兰
我必须有 2 个列表框和一个按钮。第一个列表框应该搜索文件并填充年份,当用户选择年份并单击按钮时,它会显示该特定年份的相应汽车型号。我有使用 StreamReader 的想法,但我不知道如何开始。感谢您的帮助
解决方案
创建一个字符串列表字典,其中包含带有年份的汽车列表以及年份列表:
private readonly Dictionary<int, List<string>> _carsByYear =
new Dictionary<int, List<string>>();
private readonly List<int> _years = new List<int>();
然后你可以用
List<string> cars = null;
foreach (string line in File.ReadLines(@"C:\Users\Me\cars.txt")) {
if (!String.IsNullOrWhiteSpace(line)) {
if (Int32.TryParse(line, out int year)) { // We have a year
if (_carsByYear.TryGetValue(year, out var existingList)) {
cars = existingList;
} else {
// Add a new list with year as the key
_years.Add(year);
cars = new List<string>();
_carsByYear.Add(year, cars);
}
} else { // We have a car
cars.Add(line);
}
}
}
现在您可以分配_years
给DataSource
第一个 ListBox。您可以SelectedIndexChanged
使用
int year = (int)listBox1.SelectedItem;
今年,您可以获得汽车清单
var selectedCarList = _carsByYear[year];
将其分配给DataSource
第二个 ListBox 的。
推荐阅读
- php - 在我编辑输入时获取日期的值
- android - 扩展“AppCompatActivity”类不允许我使用 AppCompat 主题
- mysql - 如何在sql中同时计数和选择?
- popupwindow - Firefox WebExtension 弹出窗口 - 'click' 事件功能正常,但 'unload' 不起作用(相反,'blur' 工作正常)
- javascript - JSZip压缩图片上传、加密、解密、显示图片
- mysql - MySQL query runs slower when repeated
- c - 使用 fork 和 exec 实现 CreateProcess
- java - 基于字符串的对象创建
- tensorflow - 使用不是符号张量的输入调用层 dot_1。该层的所有输入都应该是张量
- ag-grid - Ag-grid master/detail:扩展细节时的自定义行样式