В моих приложениях есть часть, отображающая путь к файлу, загруженный пользователем через OpenFileDialog. Это занимает слишком много места, чтобы отобразить весь путь, но я не хочу отображать только имя файла, поскольку это может быть неоднозначным. Поэтому я бы предпочел показать путь к файлу относительно каталога assembly/exe.
Например, сборка находится в папке "C:\Program Files\Dummy Folder\MyProgram" и в файле "C:\Program Files\Dummy Folder\MyProgram\Data\datafile1.dat", тогда я бы хотел, чтобы она show ".\Data\datafile1.dat". Если файл находится в папке "C:\Program Files\Dummy Folder\datafile1.dat", тогда мне нужно "..\datafile1.dat". Но если файл находится в корневом каталоге или в 1 каталоге ниже root, тогда отобразите полный путь.
Какое решение вы бы порекомендовали? Regex?
В основном я хочу отобразить полезную информацию о пути к файлу, не занимая слишком много места на экране.
EDIT: просто уточнить немного больше. Цель этого решения - помочь пользователю или мне узнать, какой файл я загрузил последним и грубо из того, из какого каталога он был. Я использую текстовое поле readonly для отображения пути. В большинстве случаев путь к файлу намного длиннее, чем пространство отображения текстового поля. Путь должен быть информативным, но не достаточно важным, чтобы занять больше места на экране.
Комментарий Алекс Браута был хорошим, так же как и Джонатан Леффлер. Функция Win32, предоставляемая DavidK, помогает только частично решить эту проблему, но не все, но в любом случае спасибо. Что касается решения Джеймса Ньютона-Кинга, я попробую его позже, когда я буду свободен.