2

我现在一直在许多网站上寻找答案,但所有有效的答案只适用于richTextbox,而且我使用的是普通文本框。我正在尝试将文本框的内容保存到选择的文件中,但由于某种原因该文件没有保存,我不知道问题出在哪里。这是“保存”菜单项的代码:

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;
            }
        }
    }

没有错误。

4

4 回答 4

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");
}

在您的代码中,您让用户选择要保存到的文件,然后忽略该文件并将其写入硬编码位置。您的应用可能没有执行此操作的权限,但它应该有权写入用户选择的位置。

于 2012-07-02T19:15:10.653 回答
0

使用try { } catch (Exception ex) { }如何:使用 Try/Catch 块捕获异常

于 2012-07-02T19:05:35.980 回答
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);
    }
}
于 2012-07-02T19:10:15.490 回答
0

首先,保存文件与文本的来源、富文本框或普通文本框无关。

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

于 2012-07-02T19:11:25.303 回答