You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSV读取的dinner_meal与dinner_price数组并排填充到ListBox

解决ListBox并排显示餐品与价格的问题

先修正现有代码的路径问题

你当前代码里的路径"..\Debug\Dinner.csv"存在转义字符问题,\D会被解析为转义序列导致路径错误,需要改成:

dinner = @"..\Debug\Dinner.csv";
// 或者用双反斜杠写法:"..\\Debug\\Dinner.csv"

方案1:字符串拼接对齐(快速实现)

在Dinner_Load事件中,遍历两个集合,将餐品和价格拼接成对齐的字符串后添加到ListBox。用PadRight固定餐品名称的宽度,确保价格能整齐排列:

private void Dinner_Load(object sender, EventArgs e)
{
    // 遍历两个集合,需确保二者长度一致
    for (int i = 0; i < dinner_meal.Count; i++)
    {
        // PadRight的数值可根据餐品名称的最长长度调整,保证价格列对齐
        string itemText = dinner_meal[i].PadRight(20) + dinner_price[i];
        lbDinner.Items.Add(itemText);
    }
}

方案2:自定义实体类(更规范,便于后续扩展)

如果后续需要直接获取选中项的餐品和价格(而非拆分字符串),建议定义实体类并通过重写ToString控制显示格式:

  1. 定义餐品实体类:
public class DinnerItem
{
    public string Meal { get; set; }
    public string Price { get; set; }

    // 重写ToString方法,自定义显示格式
    public override string ToString()
    {
        return $"{Meal.PadRight(20)}{Price}";
    }
}
  1. 修改CSV读取逻辑,直接存入实体类集合:
// 替换原来的两个List,改用实体类集合
List<DinnerItem> dinnerItems = new List<DinnerItem>();

public Dinner()
{
    InitializeComponent();
    dinner = @"..\Debug\Dinner.csv";
    // 使用using自动释放StreamReader资源
    using (var dinner_reader = new StreamReader(dinner))
    {
        while (!dinner_reader.EndOfStream)
        {
            var line = dinner_reader.ReadLine();
            if (string.IsNullOrWhiteSpace(line)) continue; // 跳过空行
            var values = line.Split(',');
            if (values.Length >= 2) // 避免异常行导致索引越界
            {
                dinnerItems.Add(new DinnerItem
                {
                    Meal = values[0].Trim(),
                    Price = values[1].Trim()
                });
            }
        }
    }
}
  1. 在Dinner_Load中绑定集合:
private void Dinner_Load(object sender, EventArgs e)
{
    lbDinner.DataSource = dinnerItems;
}

额外优化建议

  • 读取文件时使用using语句,确保资源自动释放,避免内存泄漏。
  • 添加空行和格式校验,防止CSV中存在异常行导致程序崩溃。

内容的提问来源于stack exchange,提问作者johno_tries

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:30:19