Member 10850253 Ответов: 1

Откройте Windows eplorer по указанному пути


Я пытаюсь открыть Проводник windows по пути, где у меня есть мой проект, но я получаю файл, который не существует. У меня есть проект в разделе D, а не в C.
Путь, который я использую, - это точный путь к папке, потому что я также использовал относительные пути.
Может ли кто-нибудь сказать мне, как я могу открыть папку на exactpath?
Спасибо.

Что я уже пробовал:

Я пытался использовать этот код:
//exactpath is the full path to the folder I want to open, but there is no file, just a folder.
System.Diagnostics.Process.Start( exactpath );

1 Ответов

Рейтинг:
2

jimmson

Привет,

попробовать это:

string filePath = @"...";
System.Diagnostics.Process.Start("explorer.exe", string.Format("/select, \"{0}\"", filePath));


Member 10850253

Все еще не работает. Это занимает какое-то место в моих документах, и у меня есть проект в диске D.
Я использую:

строка exactpath = @Path.GetFullPath(folder2);
//folder2-это относительный путь
Система.Диагностика.Процесс.Начало("explorer.exe", строка.Формат ("/select, \"{0}\"", exactpath));

jimmson

Хорошо, вы уверены, что точный путь действителен? Можете ли вы отправить точное значение пути?

Member 10850253

это каталог, который я использую сейчас:
D:\Works\Fernando\CRS\ASA - сок\Асе\Аньоса рабочего\2017\архивы\с#\Галериа-де-кнопку легкий\Галериа-де-кнопку легкий\бин\отладки\фото\prueba
Я получил это непосредственно от перехода к папке в проводнике.

jimmson

Хорошо, но это не обязательно означает, что это значение exactpath. Отладьте свой код, чтобы увидеть, что на самом деле находится в exactpath.

Member 10850253

Я использовал MessageBox. show(exactpath);
и это дает мне такую же ценность.

jimmson

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

Member 10850253

Я поделюсь всем своим кодом в качестве решения, чтобы вы могли взглянуть на него.

jimmson

Поделитесь им здесь в комментариях или улучшите свой вопрос. Отправляйте его как решение, только если это действительно решение.

Member 10850253

использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
используя системы.Сведения;
использование системы.Рисование;
использование System. Linq;
используя системы.Текст;
использование системы.Окна.Формы;
использование системы.ИО;
использование системы.Диагностика;

пространство имен Galeria_de_Imagenes
{
общественности частичного класс form1 : форма
{
публичная статическая строка exactpath = @"";
строки substringDirectory;
открытый form1()
{
метод InitializeComponent();
список.Узлы.Четкий();
ListDirectory();
}
private void ListDirectory()
{
список.Узлы.Четкий();
var rootDirectoryInfo = new DirectoryInfo(путь.GetFullPath(Каталог.GetCurrentDirectory()));
список.Узлы.Добавить (CreateDirectoryNode(rootDirectoryInfo));
}
частный статический TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo)
{
var directoryNode = новый TreeNode(directoryInfo.Name);
foreach (каталог var в directoryInfo. GetDirectories())
directoryNode.Узлы.Добавить (CreateDirectoryNode (каталог));
foreach (var-файл в directoryInfo. GetFiles())
directoryNode.Узлы.Добавить (новый TreeNode(file.Name));
вернуться directoryNode;
}
private void FillOneLevel(корень дерева, путь к строке)
{
DirectoryInfo di = новый DirectoryInfo (путь);

пробовать
{

по каждому элементу (подпапка Directoryinfoкласс в Ди.GetDirectories())
{
Узлов дерева узел = новый объект treenode(подпапка.Название);
узел.Tag = подпапка.Полное имя;
корень.Узлы.Добавить (узел);
}
}
поймать (исключение бывший)
{
}
}

private void list_AfterSelect(отправитель объекта, TreeViewEventArgs e)
{
TreeNode CurrentNode= e. Node;
exactpath = @Path.GetFullPath(CurrentNode.Полный путь);
}

частная pathbtn_Click недействительным(объект отправителя, EventArgs в электронной)
{
Ящик для сообщений.Показать(exactpath);
Система.Диагностика.Процесс.Начало("explorer.exe", строка.Формат ("/select, \"{0}\"", exactpath));
}
}
}

jimmson

Ладно, давайте вернемся немного назад. Попробуйте этот код:
string filePath = @ " C:\";
Система.Диагностика.Процесс.Начало("explorer.exe", строка.Формат ("/select, \"{0}\"", путь к файлу));

Если он открывает проводник и выбирает диск C,этот фрагмент кода работает. Затем вы должны выяснить, почему это не работает для вас. Если сниппет не работает так, как я описал, значит, в вашей ОС должна быть какая-то проблема.

Member 10850253

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

jimmson

- Сомневаюсь. Извини, но мне пора. Отладив свой код, вы в конце концов увидите проблему. Я не могу сделать это для тебя. :)

Richard Deeming

- Совершенно верно. То /select аргумент открывает родитель папка, и выбирает указанную папку внутри нее.

Если вы просто хотите открыть указанную папку, удалите /select:

System.Diagnostics.Process.Start("explorer.exe", string.Format("\"{0}\"", filePath));