C#提示警告用户覆盖.txt文件

时间:2016-07-13 11:39:15

标签: c#

不确定如何实现这一点,我没有使用SaveFileDialog,我见过使用OverWritePrompt = true似乎无法让它为我工作。

我正在使用WPF。

结构: -

我有一个名为filePathBox的文本框 - 它包含一个用于打开的文件路径:OpenFileDialog

private void fileBrowser_Click(object sender, RoutedEventArgs e)
        {

            //Firstly creating the OpenFileDialog
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

            //Setting the filter for the file extension of the files as well as the default extension
            dlg.DefaultExt = ".txt";
            dlg.Filter = "All Files|*.*";

            //Display the dialog box by calling the ShowDialog method
            Nullable<bool> result = dlg.ShowDialog();

            //Grab the file you selected and display it in filePathBox
            if (result == true)
            {
                //Open The document
                string filename = dlg.FileName;
                filePathBox.Text = filename;
            }
        }

然后,您可以单击一个按钮,.txt文件显示在名为textResult

的文本框中
private void helpfulNotes_Click(object sender, RoutedEventArgs e)
        {


            if (File.Exists(filePathBox.Text) && System.IO.Path.GetExtension(filePathBox.Text).ToLower() == ".txt")
            {
                textResult.Text = File.ReadAllText(filePathBox.Text);
            }

            if (string.IsNullOrWhiteSpace(filePathBox.Text))
            {
                MessageBox.Show("Please choose a file by clicking on the folder Icon :(");
            }

        }

在'textResult'中对该文本进行了更改后,我有一个按钮将文本保存回最初使用OpenFileDialog加载的文件路径

private void saveText_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(textResult.Text))
            {
                saveText.IsEnabled = false;
                MessageBox.Show("No Text to save!");
            }
            else
            {
                saveText.IsEnabled = true;

                string test = textResult.Text;
                System.IO.File.WriteAllText(filePathBox.Text, test);
            }

            //fileSaveIcon.Visibility = Visibility.Visible;
            //fileChangedIcon.Visibility = Visibility.Hidden;

        }

此刻它全部保存得很好,只是它没有提示用户说你确定要覆盖该文件。

目前我可以

  1. 为了这个名为TestNote.txt的目的,将文件加载到 filePathBox
  2. 在单击显示之前,在textResult中键入一些文本 文件
  3. 单击“保存”,它将仅使用文本i覆盖TestNote.txt 刚进入,甚至没有警告我
  4. 希望我已经充分解释了这一点并提供了您需要的所有代码

2 个答案:

答案 0 :(得分:1)

在写入文本文件之前,只需添加一个消息框以显示警报消息。

private void saveText_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(textResult.Text))
            {
                saveText.IsEnabled = false;
                MessageBox.Show("No Text to save!");
            }
            else
            {
        if(MessageBox.Show("are you sure you want to overwrite the file.", "Alert", MessageBoxButtons.YesNo)==DialogResult.Yes)
        {
                saveText.IsEnabled = true;
                string test = textResult.Text;
                System.IO.File.WriteAllText(filePathBox.Text, test);
                }
            }

            //fileSaveIcon.Visibility = Visibility.Visible;
            //fileChangedIcon.Visibility = Visibility.Hidden;

        }

答案 1 :(得分:0)

好吧,OverWritePrompt是一个SaveFileDialog属性,你没有使用它:你总是使用File.WriteAllText(),它总是覆盖目标文件。

您希望提供一个保存功能,可以在没有提示的情况下保存先前打开的文件,另存为“提示”功能,提示用户输入新文件名,并在保存新文件时调用“另存为”。

这是这样实现的,伪:

private string _currentlyOpenedFile;

public void FileOpen_Click(...)
{
    var openFileDialog = new ...OpenFileDialog();

    if (openFileDialog.ShowDialog())
    {
        // Save the filename when opening a file.
        _currentlyOpenedFile = openFileDialog.FileName;
    }
}

public void FileNew_Click(...)
{
    // Clear the filename when closing a file or making a new file.
    _currentlyOpenedFile = null;
}

public void FileSave_Click(...)
{
    if (_currentlyOpenedFile == null)
    {
        // New file, treat as SaveAs
        FileSaveAs_Click();
        return;
    }
}

public void FileSaveAs_Click(...)
{
    var saveFileDialog = new ...SaveFileDialog();

    if (openFileDialog.ShowDialog())
    {
        // Write the file.
        File.WriteAllText(text, openFileDialog.FileName);

        // Save the filename after writing the file.
        _currentlyOpenedFile = openFileDialog.FileName;
    }
}

在这里,您将利用SaveFileDialog的功能,该功能会提示用户是否要覆盖现有文件。