c # openfiledialog для выбора нескольких файлов в том же порядке, что и пользователь

В моем приложении Windows на С# мне нравится получать несколько файлов в том же порядке, что и пользователь, выбирая файл в окне openfiledialog. Я получаю весь выбранный файл, но его порядок неверен. Кто-нибудь поможет мне решить эту проблему.


person Muthuraman Sundararaj    schedule 12.07.2016    source источник
comment
Вы должны создать свой собственный диалог   -  person Hamid Pourjam    schedule 12.07.2016
comment
Что за заказ? Просто отсортируйте его своим методом openFileDialog.FileNames, возможно, так проще.   -  person    schedule 12.07.2016
comment
Если пользователь выбирает первый файл, он должен быть в индексе [0], тогда, если пользователь выбирает второй файл, он должен быть в индексе [1] ... и так далее. При назначении openFileDialog.FileNames массиву строк должен соблюдаться указанный выше порядок.   -  person Muthuraman Sundararaj    schedule 12.07.2016
comment
@dotctor, можете ли вы предложить мне какие-либо ссылки или дать мне код для создания собственного диалога, который соответствует моему ограничению?   -  person Muthuraman Sundararaj    schedule 12.07.2016


Ответы (1)


Если вы посмотрите на документацию по интерфейсу базового элемента управления OPENFILENAME, вы увидите этот комментарий:

Если пользователь выбирает более одного файла, буфер lpstrFile возвращает путь к текущему каталогу, за которым следуют имена выбранных файлов.

И, кроме некоторых комментариев о символах-разделителях, используемых для разных сценариев, о том, что делать, если буфера недостаточно, и некоторых подробностях о поддержке устаревшей версии 8.3, вот и все. Другими словами, OpenFileDialog не предлагает никакого механизма для всплывающей информации о сортировке, поскольку базовое диалоговое окно Windows Common Dialog Box в любом случае не предлагает получить эту информацию через стандартный интерфейс.

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

person Anon Coward    schedule 12.07.2016
comment
Было бы еще полезнее иметь некоторую документацию или источник, подтверждающий утверждение, и идеально, если бы мы могли знать, как ОС на самом деле заполняет список выбранных файлов. Я имею в виду, что для создания списка определенно не должно использоваться Random(), верно? ржу не могу - person natenho; 20.02.2021
comment
Сложно сослаться на доказательство этого, так как базовая документация ни для элемента управления .NET, ни для базового API Win32 не содержит комментариев по поводу возвращенного порядка, предполагая, что, хотя порядок, вероятно, существует, он зависит от прихоти реализации и, вероятно, изменяется в течение время. Другими словами, это недокументированное поведение. Тем не менее, я добавил ссылку на документацию и некоторые подробности об отсутствующих гарантиях. - person Anon Coward; 20.02.2021