【问题标题】:Populate combobox with content from comma separated textfile - based on selection of another combobox使用逗号分隔的文本文件中的内容填充组合框 - 基于另一个组合框的选择
【发布时间】:2015-03-23 08:43:31
【问题描述】:

在一个 c# 程序中,我有两个组合框,一个具有固定值返回值,例如 01,02,03..

对于第二个组合框,我有一个逗号分隔的文件,其值如下: 01,一些文字 01,一些文本2 02,一些文本3 04,sometext4

我想用逗号分隔文件中的值填充我的第二个组合框,其中数字与 combobox1 选择的值匹配。

所以我需要读取逗号分隔的 csv 文件,然后比较结果并将值添加到第二个组合框。

我已经尝试使用下面的代码,但它返回随机值,它返回数字,而不是文本值。

combobox2.Items.Clear();

string combobox1_SelectedValue = combobox1.SelectedItem.ToString();
string sImport = Program.Properties.Settings.Default.sImport;
string[] lineOfContents = File.ReadAllLines(sImport);

foreach (var line in lineOfContents)
{
    string[] tokens = line.Split(',');
    foreach (string uLine in tokens)
    {
        if (uLine.ToString().Substring(0) == combobox1_SelectedValue)
        {
            combobox2.Items.Add(uLine[1]);
        }
    }
}

【问题讨论】:

  • 问题出在哪里?读取 csv,填充组合框,选择值?
  • 我认为您可能需要用空格(' ')再次拆分每个标记以获取该标记的键和值,然后将数字与所选值进行比较并返回相应的文本。我还想建议使用 Linq 来代替混乱的循环。

标签: c# csv combobox


【解决方案1】:

如果您的文件是包含逗号和空格的一行,则不需要行数组,但应先用空格分隔。

如果你的文件是一对“数字,文本”,你的 foreach 循环应该如下所示:

  foreach (var line in lineOfContents)
  {
        string[] tokens = line.Split(',');
        if (tokens[0] == combobox1_SelectedValue)
        {
            comboBox2.Items.Add(tokens[1]);
        }   
   }

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 2012-04-11
    • 1970-01-01
    • 2023-01-14
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    相关资源
    最近更新 更多