FolderBrowserDialog с полем ввода

Я не уверен, что гуглить здесь, чтобы объяснить, что я хочу сделать, поэтому я попробую здесь: я использую оба OpenFileDialog а также FolderBrowserDialog в моем коде для просмотра файлов и каталогов соответственно.

Когда диалоговые окна открываются, пользователь получает только возможность фактически просматривать дерево файлов / каталогов. Однако на деревьях со многими каталогами и подкаталогами пользователи хотели бы также иметь возможность вручную неявно записывать (или вставлять) полный путь, по которому нужно перейти.

Как я могу реализовать это в коде?

Вот две функции, которые используют диалоговые окна:

Используя FolderBrowserDialog:

    private void buttonAddDirectory_Click(object sender, EventArgs e)
    {
        this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
        folderBrowserDialog.SelectedPath = "C:\\";

        if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
        {
            string selectedPath = folderBrowserDialog.SelectedPath;

            if (!searchForFiles(selectedPath))
            {
                MessageBox.Show("The directory: " + selectedPath + " doesn't contain sequences.", "Error!");
                return;
            }

            testForm.enableNumOfProcesses();
            createNewCommand(runBatchScript, selectedPath, true);
        }
    }

Использование OpenFileDialog:

    private void buttonAddFile_Click(object sender, EventArgs e)
    {
        this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
        openFileDialog.InitialDirectory = "C:\\";
        openFileDialog.Filter = "PMD files (*" + sequenceExtenssion + ")|*" + sequenceExtenssion + "|All files (*.*)|*.*";
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            string selectedFile = openFileDialog.FileName;
            if (Path.GetExtension(selectedFile).CompareTo(sequenceExtenssion) != 0)
            {
                MessageBox.Show("The file: " + selectedFile + " is not a sequence file.", "Error!");
                return;
            }
            createNewCommand(batchRunExe, selectedFile, false);
        }
    }

1 ответ

В зависимости от ОС, которую использует ваш пользователь, это делается по-разному:

  1. Windows 7, Vista, XP и т. Д. - вы можете просто ввести метакоманды (например, D:) в File name вход и эта метакоманда будет выполнена. Или вы можете просто поместить свой путь в поле сверху (нужно щелкнуть по нему, чтобы переключиться из вида навигации в вид ввода)

  2. Если вы используете Mono и некоторые другие стандартные диалоговые окна с графическим интерфейсом, они могут вообще не обеспечивать эту функциональность, поэтому вы должны реализовать эти диалоги самостоятельно.

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