我假设在字符(@)处的广告是将行分隔成列的分隔符。如果你需要的部分总是在同一列中,你就知道他们的索引。因此,通过在隔板分割线开始走的列你有兴趣:
string[] parts = line.Split('@');
textBox_1 = part[0]; // 111033
textBox_2 = part[4]; // 21
textbox_3 = part[8]; // 37
...
做这些线代表什么呢?既然我不知道,我只是以一个人的地址为例(这里可能不是这种情况,但这不重要)。
创建一个可以存储对象的类。 (为了简单起见,我没有包括有效性测试)。
public class Address
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public static Addess FromLine(string line)
{
var a = new Address();
string[] parts = line.Split('@');
a.ID = Int32.Parse(parts[0]);
a.FirstName = parts[3];
a.LastName = parts[4];
a.City = parts[8];
return a;
}
public override string ToString()
{
return String.Format("{0} {1}, {3}", FirstName, LastName, City);
}
}
现在您可以将这些对象添加到组合框中。它们将根据ToString
方法自动显示。你可以用
Address a = (Address)myComboBox.SelectedItem;
获得所选择的项目可以填补这样
var items = new List<Address>();
while (!sr.EndOfStream) {
string line = sr.ReadLine();
if (line != null && line.Contains("@")) {
Address a = Address.FromLine(line);
items.Add(a);
}
}
myComboBox.DataSource = items;
组合框行总是这样的格式? – JaredPar
是的,我得到了大约3000行SameFormat – DaRkS