Установите местоположение папки по умолчанию, а затем дайте ему возможность выбрать путь из другой формы - PullRequest
0 голосов
/ 05 декабря 2018

Итак, оригинальная программа, которую я написал, отображала список файлов PDF в comboBox из папки c: \ temp.Но затем я хотел дать пользователю возможность изменить папку, поэтому я создал другую форму под названием Form2.Эта форма 2 открывается только при нажатии пользователем кнопки из формы 1 и закрывается, когда пользователь нажимает кнопку сохранения в форме 2.Итак, я написал код в Form2.btnSDS открывает путь к файлу и отображает путь в textBox.Как мне сделать Form1 для получения местоположения папки из Form2?

Процесс

  1. пользователь запускает программу, а форма 1 открывается и берет имя файла pdf из папки по умолчанию.

  2. пользователь хочет изменить папку по умолчанию, поэтому он нажимает кнопку администратора из формы 1 и открывает форму 2, которая является формой администратора.

  3. пользователь изменяет настройки папки по умолчаниюпапки 1 из папки 2 и закрывает папку 2.

  4. настройки папки по умолчанию изменяются в папке 1.

  5. , когда пользователь снова открывает папку 2,настройки папки по умолчанию остаются в textBox в папке 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 голосов
/ 05 декабря 2018

На самом деле вам нужно создать диалоговую форму.

Существует предопределенный диалог для выбора папки в проекте 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;

Если вы не хотите использовать это значение по умолчанию,Вы можете создать свой собственный диалог.В форме 2:

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 ... }  
  } 
}

довольно ясно, что я добавил кнопку во вторую форму.Вы можете выбрать другой путь.

вы можете использовать свои коды, такие как 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.
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...