2011-09-25 13 views
0

私がしようとしていることは、非常にシンプルですが、時間を費やしても、それを正しく行う方法をまだ理解できません。 openfiledialogを使ってテキストファイルを開くことはできますが、同じファイルに保存することはできません。また、ファイルが使用されているかどうかを確認してから、そのファイルに書き込むこともできます。ここに私のコードはオープンのためであるとボタンを保存します。ファイルに保存openfiledialog(C#2008)

public void openToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     //This if statement checks if the user has saved any changes to the list boxes 

     if (MessageBox.Show(
      "Have you saved your work?\nOpening a new file will clear out all list boxes.", 
      "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) 
     { 
      //Clears out the listboxes 
      this.itemListBox.Items.Clear(); 
      this.priceListBox.Items.Clear(); 
      this.qtyListBox.Items.Clear(); 

      //This will open the file dialog windows to allow the user to chose a file 

      OpenFileDialog fileDialog = new OpenFileDialog(); 
      fileDialog.Title = "Harv's Hardware"; 
      fileDialog.InitialDirectory = Directory.GetCurrentDirectory(); 
      //File Filter 
      fileDialog.Filter = "txt files (*.txt)|*.txt"; 
      fileDialog.FilterIndex = 2; 
      fileDialog.RestoreDirectory = true; 
      //This if statement executes is the user hits OK 
      if (fileDialog.ShowDialog() == DialogResult.OK) 
      { 
       //StreamReader readFile = File.OpenText(fileDialog.FileName); 
       currentFile = new StreamWriter(OpenFileDialog.FileName); 
       String inputString = null; 

       while ((inputString = readFile.ReadLine()) != null) 
       { 
        this.itemListBox.Items.Add(inputString); 
        inputString = readFile.ReadLine(); 
        this.priceListBox.Items.Add(inputString); 
        inputString = readFile.ReadLine(); 
        this.qtyListBox.Items.Add(inputString); 
       } 

      } 
     } 

    } 

と保存ボタン//が閉じ

と開いているファイル

 //Creates a new saveDialog 
     SaveFileDialog saveDialog = new SaveFileDialog(); 
     saveDialog.ShowDialog(); 

     //Listens to the user input 
     StreamWriter writeFile = File.CreateText(saveDialog.FileName); 

     int indexInteger = 0; 

     //Writes the actual File 
     while (indexInteger < priceListBox.Items.Count) 
     { 

      writeFile.WriteLine(itemListBox.Text); 
      writeFile.WriteLine(itemListBox.Text); 
      writeFile.WriteLine(qtyListBox.Text); 
      indexInteger++; 

     } 

    } 

任意の助けをありがとう!

答えて

0

OpenFileDialogではなくSaveFileDialogを使用し、FileStreamを使用してファイルに書き込むことができます。

ファイルが使用されているかいないかどうかを確認するために、これは私が何をすべきか..です

public bool IsFileInUse(String file) 
{ 
    bool retVal = false; 
    try 
    { 
     using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) 
     { 
      //file is not locked 
     } 
    } 
    catch 
    { 
     retVal = true; 
    } 

    return retVal; 
} 
関連する問題