openfiledialogue в c # выбирает несколько значений, но выбирает последний выбранный элемент в качестве первого - PullRequest
1 голос
/ 30 января 2012

Может кто-нибудь подсказать мне, когда я сталкиваюсь с этой проблемой?

У меня есть приложение, в котором я могу переносить элементы с помощью кнопки просмотра, теперь, когда пользователь выбирает несколько файлов, хотя он выбирает их и добавляет их(потому что multiselect = true), но он выбирает последний выбранный элемент в верхней части, почему?

Ответы [ 3 ]

1 голос
/ 30 января 2012

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

Но если вы этого не сделаете, вы можете просто отсортировать выбранный файл.файлы по их именам: это дает вам предсказуемый порядок сортировки, который имеет смысл.

1 голос
/ 30 января 2012

Вначале диалог возвращает сфокусированное имя файла (с пунктирной линией, которое вы щелкнули совсем недавно).Поэтому, если вы щелкнете по одному имени файла, а затем нажмете Shift + клик по одному нижнему значению в списке, последнее станет выделенным, и оно будет первым в списке, а затем остальные по порядку.

Если вы это сделаетевсе наоборот - щелкните один, затем Shift + щелкните один выше в списке - тогда они будут перечислены в том порядке, в котором вы ожидаете.

То же самое, если вы наденетеShift + щелчок, но вместо этого перетащите прямоугольник вокруг файлов, которые вы хотите выбрать.Это не меняет фокус (который останется на первом имени файла в списке), поэтому они в том порядке, в котором они показаны в списке.

Это еще не все, если пользователь начинает использоватьклавиатуре (Shift + Вверх / Вниз, Ctrl + Пробел, Ctrl + Вверх / Вниз) или выбор непересекающихся диапазонов с помощью Ctrl + щелчок, но суть в том, что порядок зависит от пользователя, и как они выбираютфайлы.

Но с какой стати вас волнует, в каком порядке перечислены файлы?На самом деле вы должны просто рассматривать это как неупорядоченный список (потому что на самом деле нет хорошего способа для пользователя указать порядок - это не цель диалога, поэтому он никогда не был разработан, чтобы упростить егозаказать ваш выбор).Если вы хотите отобразить имена файлов в алфавитном порядке или в каком-либо другом порядке, просто отсортируйте список, который вы получите.

1 голос
/ 30 января 2012

Не видя соответствующего кода, проблема может быть другой, но просто чтобы вы знали, есть два способа получить выходные данные: либо используя FileName, либо FileNames.

Если вы включите MultiSelect, но посмотрите только на свойство FileName, вы получите только имя одного файла,

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

Ну, двумя способами на самом деле упрощение, потому что у вас также есть SafeFileName и SafeFileNames. Я оставлю исследование в качестве упражнения для читателя.

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

...