c#将数据从txt文件加载到组合框并获取第二个值

时间:2014-05-10 07:38:30

标签: c# combobox

我想要每行的第二个值。例如:

Joshua,Kind,12
John,Amazing,85
Farrah,Smart,81

将显示组合框

 - Kind
 - Amazing
 - Smart

我的代码:

    string[] lineOfContents = File.ReadAllLines(@"C:\Users\1\Desktop\2.txt");
    foreach (var line in lineOfContents)
    {
        string[] tokens = line.Split(',');
        comboBox1.Items.Add(tokens[0]);
    }

我获得了第一个值。所以我试试这个:

    string[] tokens = line.Split(',')[1];

但是我得到了一个错误。如何在组合框中显示每一行的第二个值?谢谢!

4 个答案:

答案 0 :(得分:3)

在Split的返回值上直接使用索引器意味着结果不再是数组而是直接使用字符串

你可以写

string token = line.Split(',')[1];

comboBox1.Items.Add(line.Split(',')[1]);

但是这段代码非常危险。如果由于某种原因,文本文件中的某行无法正确分割为3个部分,会发生什么?我宁愿保持安全,并使用此

保护循环免受不必要的超出范围的异常
string[] lineOfContents = File.ReadAllLines(@"C:\Users\1\Desktop\2.txt");
foreach (var line in lineOfContents)
{
    string[] tokens = line.Split(',');
    if(tokens.Length >= 2)
       comboBox1.Items.Add(tokens[1]);
}

答案 1 :(得分:0)

不要改变(这是正确的):

string[] tokens = line.Split(',');

只是改变:

comboBox1.Items.Add(tokens[0]);

to(将0更改为1,以便获得第2个元素而不是第1个元素):

comboBox1.Items.Add(tokens[1]);

完整代码:

string[] lineOfContents = File.ReadAllLines(@"C:\Users\1\Desktop\2.txt");
foreach (var line in lineOfContents)
{
    string[] tokens = line.Split(',');
    // get the 2nd element (the 1st item is always item 0)
    comboBox1.Items.Add(tokens[1]);
}

答案 2 :(得分:0)

只需更改此行:

comboBox1.Items.Add(tokens[0]);

到此:

comboBox1.Items.Add(tokens[1]);

因为你的令牌数组在拆分后包含三个元素(在索引0,1,2处);

如果你想使用第二种方法:

只需将string[] tokens = line.Split(',')[1];更改为string tokens = line.Split(',')[1];

直接使用索引器时,只返回值而不是数组。

答案 3 :(得分:0)

问题是你必须改变

  

string [] tokens = line.Split(',')[1];

  

string tokens = line.Split(',')[1];

因为你只读一个元素(第二个)

干杯。