Рейтинг:
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));