在我机器上跑很正常,可能你的subitmes越界了,你设断点,跟踪下,自己找下原因,就知道了

解决方案 »

  1.   

    单独测试可以,但item.SubItems[0].Text是从一个TEXTBOX读入的;item.SubItems[1].Text放的是路径,是 用openFileDialog的FileName属性得到的.但就是不能建立文件,搞不懂?//将textBox的内容和openFileDialog返回的路径添加到LISTVIEW中
    private void button2_Click(object sender, System.EventArgs e)
    {
       if(textBox1.Text=="")
         MessageBox.Show("请输入游戏名字!","Worning!");
      else
       {
         if(openFileDialog1.ShowDialog()==DialogResult.OK)
           {
    int itemsNumber=listView1.Items.Count;
    String name=textBox1.Text;
             String path=openFileDialog1.FileName;
    String[] subItems=new String[]
    {
      name,
      path
    };
    listView1.Items.Insert(itemsNumber,new ListViewItem(subItems));
           }
       }
    }//关闭窗口并保存LISTVIEW的内容到文件
    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
       StreamWriter sw=null;
       
    try
    {     sw = File.CreateText("save.txt"); ListView.ListViewItemCollection items=listView1.Items;
    foreach ( ListViewItem item in items )
    {    String string1,string2;
         string1=item.SubItems[0].Text;
         string2=item.SubItems[1].Text;
         sw.WriteLine(string1);
         sw.WriteLine(string2);
    }
    }
    catch(Exception excep)
    {
    MessageBox.Show(excep.Message,"error",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    finally
    {
      if(sw!=null)
      {
         sw.Flush();
         sw.Close();
       }
    }
    }