MilkToast
MilkToast

Reputation: 211

File.WriteAllText() statement in C# not creating a file

I am still only just learning C# in Visual Studio and I am trying to make a simple text encryption application. My problem at the moment is that when I use the command:

File.WriteAllText(name, inputTextBox.Text);

(Where name is the name of the file chosen in a SaveFileDialog and inputTextBox.Text is the text in a textbox on the main form) however the file is never actually created. I even tried to build the application and run it as administrator but nothing happened.

What's even weirder is when I opened File Explorer, in the Quick Access section where it shows recent files, all the files that were supposed to be created show up there but don't exist when I click "Open File Location" and if I just try to open them, notepad just tells me the file doesn't exist.

The files are also not in my recycle bin or anything. Here's the rest of my code in case it's something wrong with that:

public Form1()
    {
        InitializeComponent();
    }

    private void saveButton_Click(object sender, EventArgs e)
    {
        saveDialog.ShowDialog();
    }

    private void saveDialog_FileOk(object sender, CancelEventArgs e)
    {
        string name = saveDialog.FileName;
        File.WriteAllText(name, inputTextBox.Text);
    }

And in case you're wondering saveDialog is already an element in my form so there's no problem with that.

Upvotes: 0

Views: 3664

Answers (1)

Mong Zhu
Mong Zhu

Reputation: 23732

Since in your posted code the initialization of the SaveFileDialog is missing, and you say in your comment that the Debugger doesn't halt in the event body I take the long shot to assume that the event is not registered appropriately.

Try to make sure that your class (minimally) looks like the following example:

public partial class Form1 : Form
{

    SaveFileDialog saveDialog;

    public Form1()
    {
        InitializeComponent();
        // create instance of SaveFileDialog
        saveDialog = new SaveFileDialog();
        // registration of the event
        saveDialog.FileOk += SaveDialog_FileOk;
    }

    private void saveButton_Click(object sender, EventArgs e)
    {
        saveDialog.ShowDialog();
    }

    private void saveDialog_FileOk(object sender, CancelEventArgs e)
    {
        string name = saveDialog.FileName;
        File.WriteAllText(name, inputTextBox.Text);
    }
}

If your problem still remains, then I will remove my answer

Upvotes: 1

Related Questions