С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885
.NET 4.x

Выбор нужной директории

28.11.2019, 23:04. Показов 3580. Ответов 6

Студворк — интернет-сервис помощи студентам
Мне нужно, чтобы пользователь выбрал определенную папку и она запомнилась в string. При этом хотелось бы, чтобы открывалась сразу папка, которая задана в виде строки в конфигурационном файле, а затем пользователь выбирал бы нужную подпапку в заданной папке.
Использую:
C#
1
FolderBrowserDialog dlgFolder = new System.Windows.Forms.FolderBrowserDialog();
но нашел возможность только dlgFolder.RootFolder присвоить Environment.SpecialFolder. Подскажите, пожалуйста, как можно решить эту задачу.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2019, 23:04
Ответы с готовыми решениями:

Как добавить выбор файла из директории?
Здравствуйте. У меня есть код программы, которая строит гистограммы из заданного файла. Подскажите, как сделать так чтобы этот файл можно...

Выбор файла из директории без использования OpenFileDialog
Всем привет! Недавно начал программировать на C#. Решил сделать приложение, которое будет автоматически отправлять мне мой фал на почту. Но...

Выбор директории заданной глубины
Есть у меня строчка: путь к директории. Я хочу открыть диалоговое окно так, чтобы в нем была открыта эта папка. А пользователь мог выбрать...

6
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
28.11.2019, 23:11
Все что вам осталось сделать - прочитать из конфига нужный путь и присвоить свойству RootFolder.

Добавлено через 1 минуту
У вас xml - конфиг или appsettings.json ?

Добавлено через 1 минуту
Воообщем в зависимости от расширения файла конфига надо будет использовать разное API.
0
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885
28.11.2019, 23:15  [ТС]
Строку с нужным путем из конфигурационной файла я прочитываю нормально, а вот как присвоить RootFolder нужную строку?
Я пробовал dlgFolder.RootFolder = "Нужная строка" - дает ошибку
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
29.11.2019, 00:05
Цитата Сообщение от tumanovalex Посмотреть сообщение
"Нужная строка" - дает ошибку
Какую ошибку?

Добавлено через 43 секунды
А, все, понял.

Добавлено через 5 минут
If the SelectedPath property is set before showing the dialog box, the folder with this path will be the selected folder, as long as SelectedPath is set to an absolute path that is a subfolder of RootFolder (or more accurately, points to a subfolder of the shell namespace represented by RootFolder).
Устанавливайте SelectedPath перед открытием диалога. Насколько я понял, FolderBrowserDialog не работает также, как это делает OpenFileDialog - разворачивается просто дерево папок, а не открывается какая-то конкретная папка.

Добавлено через 39 минут
Цитата Сообщение от IamRain Посмотреть сообщение
FolderBrowserDialog не работает также, как это делает OpenFileDialog - разворачивается просто дерево папок, а не открывается какая-то конкретная папка.
Это я в консольке тестировал, в WinForms работает нормально.



Вот это работает.
C#
1
2
3
4
5
6
7
8
FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.RootFolder = Environment.SpecialFolder.Desktop;
            fbd.SelectedPath = AppDomain.CurrentDomain.BaseDirectory;
 
            if (fbd.ShowDialog(this) != DialogResult.OK)
                return;
 
            Text = fbd.SelectedPath;
the folder with this path will be the selected folder, as long as SelectedPath is set to an absolute path that is a subfolder of RootFolder
Это важно, поэтому RootFolder надо устанавливать Environment.SpecialFolder.Desktop.
C#
1
fbd.RootFolder = Environment.SpecialFolder.Desktop;
0
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885
29.11.2019, 22:36  [ТС]
Что-то у меня не получилось. Мне нужно попасть в директорию Temp, а я попадаю в директорию с программой. Файл проекта прикрепил. Наверное, должно быть другое решение задачи.
Вложения
Тип файла: zip CsStudyGui.zip (10.2 Кб, 4 просмотров)
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
30.11.2019, 01:42
Лучший ответ Сообщение было отмечено tumanovalex как решение

Решение

Цитата Сообщение от tumanovalex Посмотреть сообщение
а я попадаю в директорию с программой.
Ну конечно, вы туда попадете, с таким кодом:
C#
1
dlgFolder.SelectedPath = AppDomain.CurrentDomain.BaseDirectory;
Надо ведь еще прочитать из конфига ваш E:\Temp
+ у вас логическая ошибка.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
 
namespace CsListSongsGui
{
  public partial class Main : Form
  {
    public Main()
    {
      InitializeComponent();
    }
 
    private void button1_Click(object sender, EventArgs e)
    {
      var dlgFolder = new FolderBrowserDialog();
      // Нужно попасть в директорию e:\\Temp\\";   
      dlgFolder.RootFolder = Environment.SpecialFolder.Desktop;
      // здесь вместо Path.Combine можно просто установить "E:\Temp", 
      // либо прочитать из конфига, а потом занести в переменную, после присвоив ее в SelectedPath
      dlgFolder.SelectedPath = Path.Combine(Directory.GetLogicalDrives().Single(x => x.Equals("E:\\")), "Temp");
 
      if (dlgFolder.ShowDialog() != DialogResult.OK)
          return;
      
      Text = dlgFolder.SelectedPath; 
    }
  }
}
1
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885
01.12.2019, 00:03  [ТС]
Спасибо большое, все получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2019, 00:03
Помогаю со студенческими работами здесь

Удалить папку в нужной директории
В общем, проблема такая: в предыдущей теме я спрашивал, как можно очистить папку/файл. Теперь возник такой вопрос: мне нужно удалить папку...

Легкий вопрос про открытие файла в нужной директории
Когда я открываю текстовый файл например и не прописываю путь к нему, от он ищет файл этот в директории где сама программа. А вот когда...

Нужно вывести с помощью asp список файлов с нужной директории
вопрос в следующем - хочу вывести с помощью asp список файлов с нужной директории, создаю обьект : Dim fs, f Set fs =...

Как взять с нужной директории винта рисунки и запихнуть в РТ итэм?
Как взять с нужной директории винта рисунки и запихнуть в РТ итэм? :lovecodeby:

Как создавать файлы в нужной мне директории, а потом работать с этими файлами?
Хочу, чтобы программа создавала файлы в нужной мне директории, а потом работала с этими файлами: Например: В текущей директории (там...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru