Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
.NET 4.x

Если папка существует - открыть её, если нет - выдать сообщение

29.04.2020, 13:01. Показов 2051. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем вопрос такой: Что я делаю не правильно.

Мне нужно так:
Если папка существует, то открыть её, если нет, то выдать сообщение. Все это после нажатия на кнопку.

Использую:


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void button_Click(object sender, EventArgs e)
        {
            string dirName = @"C:\MyProgram";
            if (Directory.Exists(dirName))
            {
                dirName = Environment.ExpandEnvironmentVariables(dirName);
                Console.WriteLine(dirName);
                Process.Start(dirName);
                
            }
            else
            {
                MessageBox.Show("Такой папки нет");
            }
По факту папка что есть, что её нет я получаю ответ MessageBox.Show

Добавлено через 24 минуты
Мда, форум походу умер.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2020, 13:01
Ответы с готовыми решениями:

Проверка на существование файла, если существует, то выдать сообщение и открыть его
есть файл С:\1.txt. на странице кнопка. при нажатии на кнопку необходимо проверить его существование, и если он существует(создан) то...

Открыть двоичный файл, если он не существует создать его, если существует, то дописать в него
Всем здравствуйте. Открыть двоичный файл, если он не существует создать его, если существует перезаписать его новыми данными: ...

Как открыть файл на чтение и запись, создав его, если его не существует, и перезаписать, если он существует?
Как открыть файл на чтение и запись, создав его, если его не существует, и перезаписать, если он существует?

26
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
29.04.2020, 13:09
Игорь_Андреевич, https://docs.microsoft.com/ru-... etcore-3.1
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 13:58  [ТС]
Я немного не понял как именно на кнопку подвязать то что вы скинули

Добавлено через 20 минут
И мне нужно не окно выбора файла, а просто что-бы папка открылась, не в самой программе а штатным explorer
0
Эксперт .NET
 Аватар для Rius
13237 / 7732 / 1681
Регистрация: 25.05.2015
Сообщений: 23,555
Записей в блоге: 14
29.04.2020, 14:05
Так запустите explorer с параметром - путём к каталогу.
См. Process.Start.
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 14:08  [ТС]
Rius, Так перед тем как открыть, нужно проверить существует ли такая папка илинет.

Исходя из моего сообщения выше я уже указал как я открываю папку, а именно:
C#
1
2
3
dirName = Environment.ExpandEnvironmentVariables(dirName);
                Console.WriteLine(dirName);
                Process.Start(dirName);
0
Эксперт .NET
 Аватар для Rius
13237 / 7732 / 1681
Регистрация: 25.05.2015
Сообщений: 23,555
Записей в блоге: 14
29.04.2020, 14:17
Directory.Exists()
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 14:19  [ТС]
Rius, Вы прикалываетесь над мною?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button_Click(object sender, EventArgs e)
        {
            string dirName = @"C:\MyProgram";
            if (Directory.Exists(dirName))
            {
                dirName = Environment.ExpandEnvironmentVariables(dirName);
                Console.WriteLine(dirName);
                Process.Start(dirName);
                
            }
            else
            {
                MessageBox.Show("Такой папки нет");
            }
         }
Если папка есть, то выходит сообщение.
Если папки нет, то выходит сообщение.

А должно быть так:
Папка есть, открываем.
Папки нет, выводим сообщение
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
29.04.2020, 14:21
.. в качестве "а вдруг" (по шаблону у вас правильный код и должен работать нормально) - может у вашего приложения нет прав на доступ к файловой системе? ...
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 14:22  [ТС]
carrotik, В том то и прикол весь. Я пробовал к флешке, к диску D,Z,E,H,J (Это те которые у меня в ПК)
ни на один не работает.

постоянно выдает else. То есть как будто либо пути нет, либо уже не знаю что
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
29.04.2020, 14:30
.. а имя папки не кириллицей ли ..?? .. может не совпадать кодировка в ОС и приложении ..
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 14:32  [ТС]
carrotik, Нет, пробовал даже
C
1
@"%AppData%"
аналогичная ситуация.
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
29.04.2020, 14:37
Игорь_Андреевич, Надеюсь поможет)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 static void Main(string[] args)
        {
            string dirName = @"C:\logs";
            if (!Directory.Exists(dirName)) return;
            ProcessStartInfo processInfo = new ProcessStartInfo(); //создаем новый процесс
            processInfo.Verb = "Vovik"; //в данном случае указываем, что процесс должен быть запущен с правами администратора
            processInfo.FileName = dirName; //указываем исполняемый файл (программу) для запуска
 
            try
            {
                dirName = Environment.ExpandEnvironmentVariables(dirName);
                Console.WriteLine(dirName);
                Process.Start(processInfo);
            }
            catch (Win32Exception)
            {
                //Ничего не делаем, потому что пользователь, возможно, нажал кнопку "Нет" в ответ на вопрос о запуске программы в окне предупреждения UAC (для Windows 7)
            }
 
            Console.ReadKey();
        }
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 14:41  [ТС]
ShmelVG, Гиблое дело, то же не работает.

Мне не понятно почему мой шаблон не работает. Все верно указано же.
0
dive
 Аватар для I can
4961 / 4661 / 845
Регистрация: 13.04.2015
Сообщений: 9,866
29.04.2020, 14:41
Проверил, у меня работает.
C#
1
2
3
4
5
6
7
8
9
10
            string dirName = @"C:\Tmp";
            if ( Directory.Exists(dirName))
            {
                Process.Start(dirName);
          
            }
            else
            {
                MessageBox.Show("Такой папки нет");
            }
1
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
29.04.2020, 14:43
Игорь_Андреевич, я запускал ваш шаблон и у меня была ошибка прав, но мой код работает.
Попробуйте обернуть в try/catch и посмотреть какая именно ошибка
1
dive
 Аватар для I can
4961 / 4661 / 845
Регистрация: 13.04.2015
Сообщений: 9,866
29.04.2020, 14:44
Цитата Сообщение от Игорь_Андреевич Посмотреть сообщение
Мда, форум походу умер.

Не по теме:

А кто Вам тут должен отвечать? Здесь дежурных нет. Все равны. Вы много кому отвечали, причем быстро? Нет? А почему?

0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
29.04.2020, 14:45
Ещё для меня не понятно зачем вы только хотите открыть папку, а не запустить конкретный файл?
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 14:47  [ТС]
Oh my god, вы не поверите. Я только что изменил пути. В общем так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button_Click(object sender, EventArgs e)
        {
            {
                string dirName = @"C:\123\123\123";
                if (Directory.Exists(dirName))
                {
                    Process.Start(dirName);
 
                }
                else
                {
                    MessageBox.Show("Такой папки нет");
                }
            }
        }
А было:
C#
1
string dirName = @"C:\\123\\123\\123";
И все работает. Хотя я точно помню что так пробовал но ничего не выходило. перезапустил студию и заработало.


Всем спасибо огромное кто по участвовал. Тему можно закрыть
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
29.04.2020, 14:49
Игорь_Андреевич,
.. вот тут код есть по перечислению папок с try/catch на предмет ошибки доступа, попробуйте, что скажет
How to: Enumerate directories and files

..а, ну получилось, вот и ладненько ..
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 31
29.04.2020, 14:53  [ТС]
ShmelVG, Для личных целей, нем более.

Добавлено через 3 минуты
I can, А так же если в
C#
1
dirName = @"C:\Tmp";
Указывать например
C#
1
dirName = @"%AppData%";
то он не будет обрабатывать. Есть решение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2020, 14:53
Помогаю со студенческими работами здесь

Если в массиве нет 0, то выдать сообщение - 'Error No Zero'
Дорогие форумчани =) помогите с кодом =) условие должно проверить, что если в массиве нет 0, то выдаст сообщение - 'Error No Zero', но...

Если папка существует, то...
Всем привет. Проблема у меня такая, нужно создать батник которые выполняет следующие действия: 1) Если папка существует, то не...

Проверить существует ли файл на хостинге, если нет - показать сообщение
Всем привет! Вопрос в заголовке темы, буду очень очень благодарен за помощь. Код для dll библиотеки. Он должен работать при вызове...

Одинаковые с последним символы вывести на экран, а если таких нет, то выдать об этом сообщение
14.1 Написать программу, заносящую в файл 14 символов, введенных с клавиатуры, а потом считывающую эти символы. Одинаковые с последним...

Найти и вывести на экран индексы заданных элементов массива(если их нет,выдать соответствующее сообщение)
Найти и вывести на экран индексы заданных элементов массива(если их нет,выдать соответствующее сообщение).


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru