Оператор File.WriteAllText() в С# не создает файл

Я все еще только изучаю С# в Visual Studio и пытаюсь создать простое приложение для шифрования текста. Моя проблема на данный момент заключается в том, что когда я использую команду:

File.WriteAllText(name, inputTextBox.Text);

(Где name — это имя файла, выбранного в диалоговом окне SaveFileDialog, а inputTextBox.Text — это текст в текстовом поле в основной форме), однако на самом деле файл никогда не создается. Я даже пытался собрать приложение и запустить его от имени администратора, но ничего не произошло.

Что еще более странно, когда я открыл проводник, в разделе быстрого доступа, где он показывает последние файлы, все файлы, которые должны были быть созданы, отображаются там, но не существуют, когда я нажимаю «Открыть расположение файла», и если я просто попробуйте открыть их, блокнот просто говорит мне, что файл не существует.

Файлы также не находятся в моей корзине или что-то в этом роде. Вот остальная часть моего кода на случай, если с этим что-то не так:

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

И если вам интересно, saveDialog уже является элементом моей формы, так что с этим проблем нет.


person TacoMakerMan    schedule 06.07.2016    source источник
comment
Вы зарегистрировали обработчик событий saveDialog_FileOk?   -  person Patrick Hofman    schedule 06.07.2016
comment
когда вы устанавливаете точку останова внутри saveDialog_FileOk, она останавливается? и что это говорит вам о name?   -  person Mong Zhu    schedule 06.07.2016
comment
@Mong Нет, он даже не регистрирует событие FileOk.   -  person TacoMakerMan    schedule 06.07.2016
comment
@TacoMakerMan не останавливается, даже если вы зарегистрировали событие ?=! не могли бы вы опубликовать код, где и как вы его зарегистрировали?   -  person Mong Zhu    schedule 06.07.2016
comment
@MongZhu Я не совсем уверен, что вы имеете в виду, но я добавил его, просто введя его из учебника, но используя имя моего SaveFileDialog.   -  person TacoMakerMan    schedule 06.07.2016


Ответы (1)


Поскольку в вашем опубликованном коде отсутствует инициализация SaveFileDialog, и вы говорите в своем комментарии, что отладчик не останавливается в теле события, я делаю большой шаг, чтобы предположить, что событие не зарегистрировано должным образом.

Постарайтесь сделать так, чтобы ваш класс (минимально) выглядел как в следующем примере:

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

Если ваша проблема все еще остается, то я удалю свой ответ

person Mong Zhu    schedule 06.07.2016
comment
Я удалил свою частную пустоту saveDialog_FileOk и добавил ее, дважды щелкнув событие в моей фактической форме, и это, похоже, сработало. Оказывается, это было намного проще, чем я думал, но спасибо :) - person TacoMakerMan; 06.07.2016
comment
иногда бывает :) - person Mong Zhu; 06.07.2016