请教各位高人
    
    
    我的程序不断向listbox中写入内容,我想当它写到比如说一万行的时候,把这一万行都保存在txt文档中,形成日志,并在listbox中把这一万行删除,应该如何写代码,多谢

解决方案 »

  1.   

    建议你设计一个数据层,ListBox仅仅是对数据层的显示,而写入txt文档也就是对数据层的IO操作,至于删除前一万行,如果是对数据层的删除,那么仅仅update一下ListBox的显示就可以了,如果仅仅对UI操作,可以使用            int index = 0;
                while (index < 10000 && listbox.Items.Count > 0)
                {
                    listbox.Items.RemoveAt(0);
                    index++;
                }
      

  2.   

    int const NUM = 10000;void AddTxtToListBox(string txt)
    {
      ListBox.Items.Add(txt);  if(ListBox.Items.Count>=NUM)
       {
         FileStream fs = new FileStream("文件路径",FileMode.Open); 
         for(int i=0;i<NUM;i++)
         {
           //获得字节数组
           byte [] data =new UTF8Encoding().GetBytes(ListBox.Items[0].ToString());
           //开始写入
           fs.Write(data,0,data.Length);       ListBox.Items.RemoveAt(0);
         }
         //清空缓冲区、关闭流
         fs.Flush();
         fs.Close();
       }}
      

  3.   

    楼上,当把数据保存完后,直接使用ListBox.Clear()清空不是更快。建议。
      

  4.   


    使用listbox.Clear()会把还没有存入txt文档的数据也删除吧
      

  5.   

    给你一个思路
    1,建立一个事件,基于listbox变化的,应该是listboxchanged吧,该事件监视listbox的行数;
    2,当行数>10000时,触发存储动作并删除即可。
    多看看事件,及触发机制。
      

  6.   

    四楼的,我试了试你的代码,可以,但是,生成的txt文档是连续写入的,我想按listbox的显示方式,一行一行的写入txt文档,应该怎么做
      

  7.   

    同意8楼,另删除(Delete)操作在一楼,记录超过10000行后保存(Save)到txt在4楼
    大致思路:  listbox_changed(object sender,Eventargs e){      
          if(num>10000){   // num=listbox.items.count
              Save();
              Delete();
          }
      }
      

  8.   

    fs.Write(data,0,data.Length);
    改为fs.WriteLine(data,0,data.Length);
      

  9.   


    报错了错误 “System.IO.FileStream”并不包含“WriteLine”的定义
      

  10.   

    int NUM = 10;
    if (listBox1.Items.Count >= NUM)
                {
                    string NowTime = DateTime.Now.ToString("yyyy-MM-dd HH");
                    File.WriteAllText(@"c:\日志" + NowTime + ".txt", null);
                    StreamWriter sw = new StreamWriter(@"c:\日志" + NowTime + ".txt");
                    for (int i = 0; i < NUM; i++)
                    {
                        string data = listBox1.Items[0].ToString();
                        sw.Write(data);
                        sw.WriteLine();
                        listBox1.Items.RemoveAt(0);
                    }
                    //清空缓冲区、关闭流 
                      sw.Flush();
                    sw.Close();
                } 呵呵,解决了,谢谢大家了