none
C# ListBox 匯出成TXT文字檔? RRS feed

  • 問題

  • 如題~

    想請問有沒有辦法把顯示在listbox上的值,直接匯出成TXT的文字檔嗎??

    需要用什麼方法呢?


    能不能把兩個以上的listbox裡的資料會在同一個文件檔裡?

    筆數相同的listBox~比如同樣是第一筆資料,兩個listbox裡的值匯出成文件檔之後會在同一行顯示

    例如:

    listbox1      listbox2

    1                 A

    2                 B

    3                 C

     

    匯出文件檔以這樣呈現:

     

    1     A

    2     B

    3     C

     

    2011年5月27日 上午 08:18

解答

  • void Button3Click(object sender, EventArgs e)
    {
    		if (saveFileDialog2.ShowDialog() == DialogResult.OK)	
     {
      System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFileDialog2.FileName);
     
     int i =0;
      foreach (object item in listBox1.Items)
      
      	sw.WriteLine(item.ToString() + listBox2.Items[i] .ToString() )  ;
     
      i++;
    
       sw.Close();
     };
    }
    

    Cmf.Net (C) 2011
    2011年5月27日 上午 08:34

所有回覆

  • void Button3Click(object sender, EventArgs e)
    {
    		if (saveFileDialog2.ShowDialog() == DialogResult.OK)	
     {
      System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFileDialog2.FileName);
     
     int i =0;
      foreach (object item in listBox1.Items)
      
      	sw.WriteLine(item.ToString() + listBox2.Items[i] .ToString() )  ;
     
      i++;
    
       sw.Close();
     };
    }
    

    Cmf.Net (C) 2011
    2011年5月27日 上午 08:34
  • 謝謝您的回覆~^^

    想請問一下~

    if (saveFileDialog2.ShowDialog() == DialogResult.OK)	 這行是在判斷什麼呢??
    2011年5月27日 上午 08:50
  • CommonDialog.ShowDialog 方法

    http://msdn.microsoft.com/zh-tw/library/e61ft40c.aspx

    判斷有選到儲存檔案,不想選的話,就給絕對路徑...


    2011年5月27日 上午 09:23
  • 這是在判斷是存檔位置的對話框被使用者點擊確定或取消,如果使用者是點儲存或確定就會回傳OK反之則Cancel。
    2011年5月27日 上午 09:24
  • 感謝~我懂了~^^!!

    謝謝你們的解惑~

    2011年5月27日 上午 09:30
  • 順帶一提ListBox顯示的文字,是透過妳存入物件的ToString()方法取得的,如果你今天自訂一個類別並複寫這個方法,你也可以改變自訂類別顯示在ListBox的樣子。經過上面我們可以得知,我們只要直接去抓ListBox.Items[X].ToString()的回傳值就能知道ListBox顯在顯示甚麼了。

    這樣寫可能比較符合你要的。

          String m_Filepath = "C:\\Output.txt";
          String[] m_Value = new String[listBox1.Items.Count >= listBox2.Items.Count ? listBox1.Items.Count : listBox2.Items.Count];
          
          for (int X = 0; X < m_Value.Length; X++)
          {
            if (X < listBox1.Items.Count)
              m_Value[X] = listBox1.Items[X].ToString() + "\t\t";
            else
              m_Value[X] = "\t\t\t";
    
            if (X < listBox2.Items.Count)
              m_Value[X] += listBox2.Items[X].ToString();
          }
    
          StreamWriter m_OutputStream = new StreamWriter(m_Filepath);
          m_OutputStream.WriteLine("{0}\t{1}", listBox1.Name, listBox2.Name);
          foreach (String str in m_Value)
            m_OutputStream.WriteLine(str);
          m_OutputStream.Close();
    

    • 已提議為解答 Optimist9266 2011年5月27日 上午 10:15
    • 已取消提議為解答 Optimist9266 2011年5月27日 上午 10:16
    2011年5月27日 上午 09:39