C#: Произошла ошибка, когда я хочу сохранить файл через SaveFileDialog?

У меня есть небольшая проблема с моим кодом C#.

В моем методе я создаю XDocument/XML-файл, а после этого я хочу сохранить его с помощью SaveFileDialog. Все работает нормально, пока я не нажимаю кнопку "Сохранить" в диалоговом окне, а затем появляется сообщение об ошибке "Файл C:\Users\ Пользователь \ Рабочий стол \XMLOutput.xml не существует. Проверьте правильность имени файла". было указано ".

Итак, вот мой код:

public void Create_XMLFile()
    {
        XDocument xDoc = new XDocument(
            new XElement("itemlist",
                new XElement("item",
                    new XAttribute("article", "1"),
                    new XAttribute("quantity", "200"),
                    new XAttribute("price", "35")))
        );

        SaveFileDialog saveFileDialog = new SaveFileDialog();
        saveFileDialog.InitialDirectory = "C:\\";
        saveFileDialog.CheckFileExists = true;
        saveFileDialog.CheckPathExists = true;
        saveFileDialog.DefaultExt = "xml";
        saveFileDialog.Filter = "XML (*.xml)|*.xml|All (*.*)|*.*";
        saveFileDialog.FilterIndex = 2;
        saveFileDialog.RestoreDirectory = true;
        saveFileDialog.FileName = "XMLOutput";

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {                
            xDoc.Save(saveFileDialog.FileName);
        }
    }

// Button, which triggers the method above
private void Export_Click(object sender, RoutedEventArgs e)
    {
        Create_XMLFile();
    }

Так что да, где проблема в моем коде? Я просто хочу сохранить XML-файл, по которому путь выбрал пользователь. Но, как я уже сказал, я всегда получаю это сообщение об ошибке после нажатия кнопки "Сохранить" в диалоговом окне Windows.:(

Надеюсь, вы, ребята, можете помочь мне здесь.

1 ответ

Решение

Вы устанавливаете saveFileDialog.CheckFileExists = true; Это заставляет диалог отображать именно это предупреждение, если файл еще не существует. Обычно вы устанавливаете значение true для диалогов Open, а не для диалогов Save. saveFileDialog.OverwritePrompt с другой стороны, обычно устанавливается в true при сохранении.

Другие вопросы по тегам