簡體   English   中英

填充列表框

[英]populating listbox

有一個具有這種結構的文件:

companyname1; shortname1; identification1; 01.01.1980 companyname2; shortname2; identification2; 01.01.1987 companyname3; shortname3; identification3; 01.01.1990 companyname4; shortname4; identification4; 23.01.1995

我想將所有“ companynameX”放到listbox1中,當單擊每個項目時,相關的“ identificationX”將顯示在文本框中。 我非常愚蠢,對於這個簡單的任務,我使用了DataTable。 它不起作用,列表框僅填充一項,文本框則填充此“ System.Data.DataRowView”。 為什么不起作用,以及如何以更優雅的方式完成任務?

foreach (string line in File.ReadAllLines(@"D:\file.txt"))
{
    string[] parts = line.Split(';');

    DataSet ds = new DataSet();
    DataTable dt = new DataTable("dt");
    DataColumn dc;
    DataRow dr;
    dc = new DataColumn();
    dc.DataType = System.Type.GetType("System.String");
    dc.ColumnName = "First";
    dt.Columns.Add(dc);

    dc = new DataColumn();
    dc.DataType = System.Type.GetType("System.String");
    dc.ColumnName = "Second";
    dt.Columns.Add(dc);

    ds.Tables.Add(dt);
    for (int j = 2; j < parts.Length; j += 4)
    {
         for (int k = 0; k < parts.Length; k += 4)
         {
              dr = dt.NewRow();
              dr["First"] = parts[j];
              dt.Rows.Add(dr);

              dr = dt.NewRow();
              dr["Second"] = parts[k];
              dt.Rows.Add(dr);
          }
    }

    listBox1.DataSource = dt;
    listBox1.DisplayMember = "First";
    listBox1.ValueMember = "Second";
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
            string value = listBox1.SelectedItem.ToString();
            textBox1.Text = value;
}
var records = from line in File.ReadAllLines(@"D:\file.txt")
              let parts = line.Split(';')
              select new 
              {
                  Company = parts[0],
                  Identification = parts[2]
              };
listBox1.DataSource = records;
listBox1.DisplayMember = "Company";
listBox1.ValueMember = "Identification";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM