将数据从txt文件加载到comboBox

时间:2013-11-06 10:56:25

标签: c# combobox streamreader

嗨我有这个txt文件的结构:

Lukas 1
Zdenek 3
Martin 2
Kate 1

我需要加载这些数据...我需要加载到comboBox的名称......当我从ComboBox中选择例如Lukas时,我需要将Name Lukas保存到变量Name,将数字1保存到变量数...

有可能吗?

我现在有了这个代码......

using (StreamReader reader = new StreamReader(@"C:\Us...nka\example.txt"))
{
    string data = "";
    data = reader.ReadToEnd().Trim();
}

但是我需要单独阅读姓名和单独的号码......你有什么想法吗?感谢..

3 个答案:

答案 0 :(得分:1)

首先创建一个这样的类:

public class Person {
    public string Name {get;set;}
    public int Number {get;set;}
}

然后您可以使用Linq转换您读取的字符串,如下所示:

var people = data
            .Split(new {'\r','\n'}, StringSplitOptions.RemoveEmptyEntries)
            .Select(d => new Person { Name = d.Split(' ')[0], Value = int.Parse(d.Split(' ')[1])})
            .ToList();

或者你可以更好地逐行阅读你的数据,如下所示:

var people = from l in File.ReadLines(@"C:\Us...nka\example.txt")
             let parts = l.Split(' ')
             select new Person { 
                          Name = parts[0].Trim(), 
                          Value = int.Parse(parts[1].Trim())
                            };

答案 1 :(得分:1)

您可以使用File.ReadLinesString.Split

var lines = File.ReadLines(@"C:\Us...nka\example.txt");
var data = lines.Select(l => l.Split());

我会使用一个类来存储这两个属性:

public class Person
{
    public int PersonID { get; set; }
    public string PersonName { get; set; }
}

现在您可以在循环中或使用LINQ:

加载人员
List<Person> allPersons = data
   .Where(arr => arr.Length >= 2 && arr[1].Trim().All(Char.IsDigit))
   .Select(arr => new Person
   {
       PersonName = arr[0].Trim(),
       PersonID = int.Parse(arr[1].Trim())
   })
  .ToList();

修改:

  

非常感谢...但我无法将PersonsName加载到组合框

您可以BindingSource使用ComboBox。然后相应地设置DisplayMemberValueMember属性:

var bindingSourcePersons = new BindingSource();
bindingSourcePersons.DataSource = allPersons;
personComboBox.DataSource = bindingSourcePersons.DataSource;
personComboBox.ValueMember = "PersonID";
personComboBox.DisplayMember = "PersonName";

答案 2 :(得分:0)

这是一个伪:

虽然读者不是EndOfStream 读当前行 将刚刚读取的行拆分为string []数组,分隔符为空格 数组中的第一项将是名称,数组中的第二项将是数字。 然后在组合框中添加项目。组合框有一个Items集合和一个add方法,它只需要一个System.Object。

http://msdn.microsoft.com/en-us/library/aa983551(v=vs.71).aspx