设置默认文件夹位置,然后给它一个选择其他形式的路径的选项

时间:2018-12-05 14:36:52

标签: c# winforms

所以我写的原始程序是在c:\ temp位置的comboBox上显示pdf文件列表。但是后来,我想给用户一个更改文件夹的选项,所以我创建了另一个名为Form2的表单。仅当用户按下Form1中的按钮时,此Form2才打开;当用户按下Form2中的“保存”按钮时,此Form2将关闭。所以,我用Form2编写了代码。 btnSDS打开文件路径并在textBox上显示该路径。如何使Form1从Form2获取文件夹位置?

过程

  1. 用户启动程序,并打开表格1并从默认文件夹中获取pdf文件名。

  2. 用户想要更改默认文件夹,因此他从表单1单击管理按钮,并打开表单2,即管理表单。

  3. 用户从文件夹2更改文件夹1的默认文件夹设置并关闭文件夹2。

  4. 文件夹1中的默认文件夹设置更改。

  5. 当用户再次打开文件夹2时,默认文件夹设置保留在文件夹2的文本框中。

    // Form2    
    private void btnSDS_Click(object sender, EventArgs e)
    {
        var folderBrowserDialog1 = new FolderBrowserDialog();
    
        // Show the FolderBrowserDialog.
        DialogResult result = folderBrowserDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            string folderName = folderBrowserDialog1.SelectedPath;
            textBoxSDSLocation.Text = folderName;
        }
    }
    
    // Form1
        private void Form1_Load(object sender, EventArgs e)
        {            
            DirectoryInfo test = new DirectoryInfo(@"c:\temp"); //Assuming Test is your Folder
            FileInfo[] Files = test.GetFiles("*.pdf"); //Getting Text files
    
            comboSDS.DataSource = Files;
            comboSDS.DisplayMember = "Name";
        }
    
    
    private void comboSDS_SelectedIndexChanged(object sender, EventArgs e)
    {
        //axAcroPDF2.LoadFile(@"C:\temp\" + comboSDS.Text);
        //axAcroPDF2.src = @"C:\temp\" + comboSDS.Text;
        axAcroPDF2.LoadFile(@"Form2.textBoxSDSLocation.Text" + comboSDS.Text);
        axAcroPDF2.src = @"Form2.textBoxSDSLocation.Text" + comboSDS.Text;
        axSetting();
    }
    

1 个答案:

答案 0 :(得分:0)

实际上,您需要设计一个对话框表单。

有一个预定义的对话框,用于在Windows Form项目中选择文件夹。称为FolderBrowserDialog,这是该示例代码:

privatevoid BrowseFolderButton_Click(object sender, EventArgs e) {  
    FolderBrowserDialog folderDlg = newFolderBrowserDialog();  
    folderDlg.ShowNewFolderButton = true;  
    // Show the FolderBrowserDialog.  
    DialogResult result = folderDlg.ShowDialog();  
    if (result == DialogResult.OK) {  
        textBox1.Text = folderDlg.SelectedPath;  
        Environment.SpecialFolder root = folderDlg.RootFolder;  
    }  
}  

您可以使用以下代码设置默认路径:

folderDlg .SelectedPath = //myFolder;

如果您不想使用此默认值。您可以构建自己的对话框。在Form2中:

public partial class Form2:Form
{

  public string SelectedPath {get; set;}

  private SelectPath_Click(object sender, EventArgs e)
  {
      // if path is a valid path {

      SelectedPath = txtBoxPath.text;
      this.DialogResult = DialogResult.OK;
      this.Close();

     // } else { CloseForm or Display an Error or ... }  
  } 
}

这很清楚,我在第二个表单中添加了一个Button。您可能想选择另一种方式。

您可以使用诸如FolderBrowserDialog( SampleCode )之类的代码:

Form2 FolderDialog = new Form2(); 
if (FolderDialog.ShowDialog() == DialogResult.OK)
{
   /// Set New Path 
   Foo.Text = FolderDialog.SelectedPath;
} 
else 
{ 
  // User Didn't selected a Valid path or he closed your form without response.
}