2012-07-02 75 views
2

我一直在寻找许多网站现在的答案,但所有工作的答案只适用于richTextbox,我使用普通的文本框。我试图将文本框的内容保存到一个选择的文件中,但由于某种原因文件没有保存,我不知道问题是什么。这是“保存”菜单项的代码:文本文件没有得到保存,但没有错误(C#)

private void saveToolStripMenuItem_Click(object sender, EventArgs e) 
    { 

     SaveFileDialog ofd = new SaveFileDialog(); 
     ofd.Title = "Save"; 
     ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*"; 
     if (ofd.ShowDialog() == DialogResult.OK) 
     { 
      try 
      { 
       //I don't know what to make of this, because clearly this doesn't work 
       File.WriteAllText(@"./TestFile.txt", MainTextbox.Text); 
      } 
      catch (Exception ex) 
      { 
       MainTextbox.Text += ex; 
      } 
     } 
    } 

没有错误。

+7

你不应该保存到'SaveFileDialog'中选定的文件吗? –

+0

@TimS。当然会打败目标,也就是目前设定的方式。我会打电话给你的建议一个答案。 – erodewald

+3

你确定没有例外吗?也许它正在吞噬链条上的某个地方?您正试图在C:\驱动器的根目录下创建一个文件,因此很有可能(并且很可能,除非您采取其他措施)您没有权限在其中创建文件。我的假设是你使用硬编码的文件名来测试你是否可以创建一个文件,否则,上面Tim S的评论可能是解决方案。 –

回答

5

您应该保存到您的SaveFileDialog中选定的文件,如OpenFile()检索到的文件。这个例子为我工作:

SaveFileDialog ofd = new SaveFileDialog(); 
ofd.Title = "Save"; 
ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*"; 
if (ofd.ShowDialog() == DialogResult.OK) 
{ 
    using (var fileStream = ofd.OpenFile()) 
    using (var sw = new StreamWriter(fileStream)) 
     sw.WriteLine("Some text"); 
} 

在你的代码,你让用户选择一个文件保存到,然后忽略并将其写入一个硬编码位置。有可能您的应用没有权限执行此操作,但应用程序应具有写入用户所选位置的权限。

+0

这解决了我的问题。非常感谢你! – DutchLearner

0

我认为它的访问被拒绝的问题..尝试用 'd' 车程

这是工作例子..。 WriteAllText当文件已经存在,如果文件已经存在,然后使用AppendAllText

using System; 
using System.IO; 
using System.Text; 

class Test 
{ 
    public static void Main() 
    { 
     string path = @"c:\temp\MyTest.txt"; 

     // This text is added only once to the file. 
     if (!File.Exists(path)) 
     { 
      // Create a file to write to. 
      string createText = "Hello and Welcome" + Environment.NewLine; 
      File.WriteAllText(path, createText); 
     } 

     // This text is always added, making the file longer over time 
     // if it is not deleted. 
     string appendText = "This is extra text" + Environment.NewLine; 
     File.AppendAllText(path, appendText); 

     // Open the file to read from. 
     string readText = File.ReadAllText(path); 
     Console.WriteLine(readText); 
    } 
} 
0

首先,将文件保存无关与将文本从,丰富的文本框或普通文本框来工作。

正如Brian S.在评论中所说的那样,很可能存在例外,因为您正在写入C驱动器。您应该使用相对路径:"./MyTest.txt"

相关问题