浏览文件夹并获取用户输入以创建新文件

时间:2014-07-11 11:16:21

标签: c# user-input

我想在用户选择的目录中创建一个文件,并通过用户输入命名 我尝试了 FolderBrowserDialog ,但它没有提示我提供文件名:

FolderBrowserDialog fbd = new FolderBrowserDialog();
DialogResult result = fbd.ShowDialog();
string path = fbd.SelectedPath;
//string FileName; then concatenate it with the path to create a new file

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您想在文件夹中创建文件,因此您应该:

  1. 要求用户选择一个文件夹(使用FolderBrowserDialog)
  2. 为用户提供键入文件名的方法,输入字段(与文件夹对话框分开)
  3. 然后你将这2个信息连接起来以获得你的完整文件名。

    或者您可以使用SaveFileDialog并在用户选择文件时检查文件是否已存在(使用File.Exists ...)。有一个属性可以在文件不存在时显示警报,但在另一侧则不显示。 因此,当您获得DialogResult时,请使用File.Exists,您可以提醒用户。

    此解决方案的示例:

    在此示例中(我希望没有错误,现在无法测试): - 我使用SaveButton_Click单击方法在名为SaveButton的按钮上打开saveFileDialog - 我的表单上有一个SaveFileDialog组件,名为saveFileDialog1。在此组件上,事件FileOK与我的saveFileDialog1_FileOk方法

    相关联
    private void SaveButton_Click(object sender, EventArgs e)
    {
        // Set your default directory
        saveFileDialog1.InitialDirectory = @"C:\";
    
        // Set the title of your dialog
        saveFileDialog1.Title = "Save file";
    
        // Do not display an alert when the user uses a non existing file
        saveFileDialog1.CheckFileExists = false;
    
        // Default extension, in this sample txt.
        saveFileDialog1.DefaultExt = "txt";
    
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            // DO WHAT YOU WANT WHEN THE FILE AS BEEN CHOSEN
        }
    }
    
    // This method handles the FileOK event. It checks if the file already exists
    private void saveFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
    {
        if (File.Exists(saveFileDialog1.FileName))
        {
            // The file already exists, the user must select an other file
            MessageBox.Show("Please select a new file, not an existing one");
            e.Cancel = true;
        }
    }