openfiledialogue в C# выбирает несколько значений, но выбирает последний выбранный элемент в качестве первого
Кто-нибудь может направить меня, когда я столкнулся с этой проблемой?
У меня есть приложение, в котором я могу переносить элементы с помощью кнопки обзора, теперь, когда пользователь выбирает несколько файлов, хотя он выбирает их и добавляет их (потому что multiselect = true), но он выбирает последний выбранный элемент вверху, почему?
Поэтому причиной потока будет неправильно.
3 ответа
Не видя соответствующего кода, проблема может быть другой, но просто чтобы вы знали, есть два способа получить вывод: либо используя FileName
, или же FileNames
,
Если вы включите MultiSelect
пока только посмотрите на FileName
свойство, вы получите только имя одного файла,
Это свойство может быть именем только одного выбранного файла. Если вы хотите вернуть массив, содержащий имена всех выбранных файлов в диалоговом окне множественного выбора, используйте
FileNames
,
Что ж, два пути - это упрощение, потому что у вас также есть SafeFileName
а также SafeFileNames
, Я оставлю исследование в качестве упражнения для читателя.
Возможно, я неправильно истолковал вашу проблему, основываясь на комментариях, но давайте посмотрим.
Вы не сказали, почему заказ важен для вас, и действительно ли он вам нужен в том же порядке, в котором пользователь выбрал файлы.
Но если вы этого не сделаете, вы можете просто отсортировать выбранные файлы по их имени: это дает вам предсказуемый порядок сортировки, который имеет смысл.
Диалог возвращает сфокусированное имя файла (имя с пунктирной линией, которое вы щелкнули совсем недавно) в первую очередь. Поэтому, если вы щелкнете по одному имени файла, а затем нажмете Shift+ клик по одному нижнему значению в списке, последнее станет выделенным, и оно будет первым в списке, а затем остальные по порядку.
Если вы сделаете это наоборот - нажмите один, затем Shift+ щелкните один выше в списке - тогда они будут перечислены в порядке, который вы ожидаете.
То же самое, если вы не нажимаете Shift+ клик, а вместо этого перетаскиваете прямоугольник вокруг файлов, которые хотите выбрать. Это не меняет фокус (который останется на первом имени файла в списке), поэтому они расположены в том порядке, в котором они показаны в списке.
Это еще не все, если пользователь начинает использовать клавиатуру (Shift+ Вверх / Вниз, Ctrl+ Пробел, Ctrl+ Вверх / Вниз) или выбирает непересекающиеся диапазоны, используя Ctrl + щелчок, но суть в том, что порядок все до пользователь, и как они идут о выборе файлов.
Но с какой стати вас волнует, в каком порядке перечислены файлы? На самом деле вы должны просто рассматривать это как неупорядоченный список (потому что у пользователя действительно нет хорошего способа указать порядок - это не цель диалога, поэтому он никогда не был разработан, чтобы упростить порядок выбора). Если вы хотите показать имена файлов в алфавитном порядке или в каком-либо другом порядке, просто отсортируйте список, который вы получите.