首页 > 解决方案 > 如何搜索文件并将其显示在列表框中?

问题描述

我被 C# 项目卡住了,我不知道如何解决它。我有一个文本文件“cars.txt”,它包含以下信息:

1950
日产 Sentra
福特福克斯
1951
马自达 5 马自达
3
丰田
1952
雪佛兰

我必须有 2 个列表框和一个按钮。第一个列表框应该搜索文件并填充年份,当用户选择年份并单击按钮时,它会显示该特定年份的相应汽车型号。我有使用 StreamReader 的想法,但我不知道如何开始。感谢您的帮助

标签: c#filesearch

解决方案


创建一个字符串列表字典,其中包含带有年份的汽车列表以及年份列表:

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);
        }
    }
}

现在您可以分配_yearsDataSource第一个 ListBox。您可以SelectedIndexChanged使用

int year = (int)listBox1.SelectedItem;

今年,您可以获得汽车清单

var selectedCarList = _carsByYear[year];

将其分配给DataSource第二个 ListBox 的。


推荐阅读