2

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

Lukas 1
Zdenek 3
Martin 2
Kate 1

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

有可能的?

我现在有这个代码...

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

但我需要分别阅读姓名和号码......你有什么想法吗?谢谢..

4

3 回答 3

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";
于 2013-11-06T11:04:39.793 回答
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())
                            };
于 2013-11-06T11:02:44.583 回答
0

这是一个伪:

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

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

于 2013-11-06T11:04:01.337 回答