none
c# StreamReader讀txt問題 RRS feed

  • 問題

  • 本人原意 : 

                     listView1 : (ListView) 有三行資料行
                     第一行顯示 temp[10]
                     第二行顯示 temp[11]
                     第三行顯示 整個readline

    請問如何讀取並顯示以下txt中的兩行資料

    0|1|2|3|4|5|6|7|8|9|10|11|
    a|b|c|d|e|f|g|h|i|j|k|l|

    -------------------------------------------------------------

    下乃程式碼 :

                    if (of.ShowDialog() == DialogResult.OK)
                    {
                        listView1.Items.Clear();
    
                        String filepath = of.FileName;
                        StreamReader sr = new StreamReader(filepath, System.Text.Encoding.GetEncoding("UTF-8"));
    
                        int counter = System.Convert.ToInt32(lblcount.Text);
    
                        int q = 0;
                        String line;
                        while ((line = sr.ReadLine()) != null)
                        {
                            q++;
                        }
                        this.t1.Text = q.ToString();
    
                        for (int p = 0; p < q; p++)
                        {
                            u = System.Convert.ToString(p);
    
                            String Content = "";
                            for (int i = 1; i <= counter; i++)
                            {
                                Content = sr.ReadLine();
                            }
                            counter++;
    
                            char[] schar = { '|' };
                            String[] temp = Content.Split(schar);
    
                            listView1.Items.Add(u, temp[10], 0);
                            listView1.Items[u].SubItems.Add(temp[11]);
                            listView1.Items[u].SubItems.Add(Content);
    
                            this.listView1.Items[u].Selected = true;
                            this.listView1.Items[u].BackColor = SystemColors.Highlight;
                            this.listView1.Items[u].ForeColor = SystemColors.Window;
    
                            p = System.Convert.ToInt32(u);
                            p++;
    
                        }
    
                        sr.Close();
    
                    }
    
                    else
                    {
                        MessageBox.Show("load fall");
                    }

    請指教
    2009年9月30日 上午 11:04

解答

  •         private void button1_Click(object sender, EventArgs e)
            {
                if (of.ShowDialog() == DialogResult.OK)
                {
                    listView1.Items.Clear();
    
                    String filepath = of.FileName;
                    StreamReader sr = new StreamReader(filepath, System.Text.Encoding.GetEncoding("UTF-8"));
    
                    while (!sr.EndOfStream)
                    {
                        string Content = sr.ReadLine();
                        String[] temp = Content.Split('|');
    
                        // Create three items and three sets of subitems for each item.
                        ListViewItem item1 = new ListViewItem(temp[10]);
                        // Place a check mark next to the item.
                        item1.SubItems.Add(temp[11]);
                        item1.SubItems.Add(Content);
                        //Add the items to the ListView.
                        listView1.Items.Add(item1);
                    }
                }
                else
                {
                    MessageBox.Show("load fall");
                }
            }

    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    • 已標示為解答 ricoyup 2009年9月30日 下午 12:20
    2009年9月30日 下午 12:15
    版主

所有回覆

  • Hi!
    也許你先把你目前的程式碼,標一些註解說明你的程式碼為什麼要這樣寫
    這樣才能討論你的程式碼
    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    2009年9月30日 上午 11:19
    版主
  • 以下txt中的兩行資料

    0|1|2|3|4|5|6|7|8|9|10|11|
    a|b|c|d|e|f|g|h|i|j|k|l|


    我有一個ListView , 名:listView1

    有三行資料行

    我想

    於第一個項目中
    listView1的第一個item顯示 temp[10]  ( 即 "10" )
    listView1的第二個item顯示 temp[11]  ( 即 "11" )
    listView1的第三個item顯示txt中的一整行 (即 "0|1|2|3|4|5|6|7|8|9|10|11|" )

    於第二個項目中
    listView1的第一個item顯示 temp[10]  ( 即 "k" )
    listView1的第二個item顯示 temp[11]  ( 即 "l" )
    listView1的第三個item顯示txt中的一整行 (即 "a|b|c|d|e|f|g|h|i|j|k|l|)

    請問如何讀取並顯示
    2009年9月30日 上午 11:26
  •         private void button1_Click(object sender, EventArgs e)
            {
                if (of.ShowDialog() == DialogResult.OK)
                {
                    listView1.Items.Clear();
    
                    String filepath = of.FileName;
                    StreamReader sr = new StreamReader(filepath, System.Text.Encoding.GetEncoding("UTF-8"));
    
                    while (!sr.EndOfStream)
                    {
                        string Content = sr.ReadLine();
                        String[] temp = Content.Split('|');
    
                        // Create three items and three sets of subitems for each item.
                        ListViewItem item1 = new ListViewItem(temp[10]);
                        // Place a check mark next to the item.
                        item1.SubItems.Add(temp[11]);
                        item1.SubItems.Add(Content);
                        //Add the items to the ListView.
                        listView1.Items.Add(item1);
                    }
                }
                else
                {
                    MessageBox.Show("load fall");
                }
            }

    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    • 已標示為解答 ricoyup 2009年9月30日 下午 12:20
    2009年9月30日 下午 12:15
    版主