У меня есть этот код, как я могу позволить ему принимать все типичные форматы изображений? PNG, JPEG, JPG, GIF?
Вот что у меня так далеко:
public void EncryptFile()
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
dialog.InitialDirectory = @"C:\";
dialog.Title = "Please select an image file to encrypt.";
if (dialog.ShowDialog() == DialogResult.OK)
{
//Encrypt the selected file. I'll do this later. :)
}
}
Обратите внимание, что фильтр настроен на файлы .txt. Я мог бы перейти на PNG, но что из других типов?
c#
winforms
openfiledialog
Серхио Тапиа
источник
источник
Вот пример предложения ImageCodecInfo (в VB):
И это выглядит так:
источник
Dim ofd As New OpenFileDialog() With {.Filter = ImageCodecInfo.GetImageEncoders().Aggregate("All Files (*.*)|*.*", Function(s, c) $"{s}|{c.CodecName.Substring(8).Replace("Codec", "Files").Trim()} ({c.FilenameExtension})|{c.FilenameExtension}")}
О да. В.Б., я скучаю по тебе иногдаПолное решение в C # здесь:
источник
Для фильтрации файлов изображений используйте этот пример кода.
источник
Мне больше нравится ответ Тома Фауста. Вот версия C # его решения, но немного упрощающая.
источник
Для изображений вы можете получить доступные кодеки из GDI (System.Drawing) и построить свой список из этого с небольшой работой. Это был бы самый гибкий путь.
источник
var imageExtensions = string.Join(";", ImageCodecInfo.GetImageDecoders().Select(ici => ici.FilenameExtension));
dialog.Filter = string.Format("Images|{0}|All Files|*.*", imageExtensions);
Просто некроммент для использования string.Join и LINQ.
источник
Для тех, кто не хочет каждый раз вспоминать синтаксис, есть простая инкапсуляция:
Использование:
источник
Чтобы сопоставить список файлов разных категорий, вы можете использовать фильтр следующим образом:
источник
Это экстремально, но я построил динамический фильтр на основе базы данных, используя таблицу базы данных из 2 столбцов с именем FILE_TYPES, с именами полей EXTENSION и DOCTYPE:
Очевидно, у меня было много разных типов и расширений, но я упрощаю это для этого примера. Вот моя функция:
Должен дать фильтр, который выглядит так:
источник
Filter="Document files (*.doc,*.docx,*.pdf)|*.doc;*.docx,*.pdf|Image files (*.bmp,*.jpg)|*.bmp;*.jpg";
и это должно привести к фильтру, который выглядит как последняя картинка в ответе выше.DataLayer.Get_DataTable()
которая будет принимать команды SQL, которые есть в этом коде, и отправлять вам обратно таблицу данных, она все сделает за вас. Как я уже сказал, да, это было экстремально, но это работает.foreach
цикла в середине. У вас могут быть ТОННЫ разных типов и расширения внутри них. Это послужило способом их организации, а затем применения кода для их получения. Для меня это было лучше, чем просто предполагать, что их было всего 3, и давать строку конкатенации. Научите человека ловить рыбу ....