Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


Быстрое получение названий всех месяцев

Довольно часто при разработке приложений требуется предоставить пользователю названия всех месяцев, например в виде списка, который содержится внутри элемента управления ComboBox.

месяца

Для создания и заполнения такого списка используют разные способы, например:

//1.
string [] monthNames = {"Январь", "Февраль", ...};
comboBox1.DataSource = monthNames;
//2.
comboBox1.Items.AddRange(new string[] { "Январь", "Февраль", ...});

Как видно, чаще всего, всё сводятся к созданию массива и его последующей привязки к элементу управления.

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

Избежать подобных проблем и при этом ускорить процесс создания списка можно с помощью класса DateTimeFormatInfo, который содержится внутри пространства имён System.Globalization. Данный класс содержит свойство MonthNames, с помощью которого можно быстро получить названия всех месяцев в виде массива, например:


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


//добавить
using System.Globalization;
//1.
string [] monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames;
comboBox1.DataSource = monthNames;
//2.
comboBox1.DataSource = DateTimeFormatInfo.CurrentInfo.MonthNames;
//3.
comboBox1.Items.AddRange(DateTimeFormatInfo.CurrentInfo.MonthNames);

Также с помощью данного класса можно быстро получить и аббревиатуры (сокращенные названия месяцев), используя свойство AbbreviatedMonthNames, например:

comboBox1.DataSource = DateTimeFormatInfo.CurrentInfo.AbbreviatedMonthNames;

comboBox

Данный способ намного удобней и быстрей чем предыдущие способы, но он также имеет несколько «недостатков»:

1. Свойство MonthNames всегда возвращает массив, последним элементом которого является пустая строка, исключить которую можно, например следующим образом:

comboBox1.DataSource = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToArray();

2. С помощью свойства CurrentInfo мы получаем значения, используя текущие региональные настройки, которые могут отличаться. Поэтому не плохо подстраховаться и задать их вручную, перед тем как получить названия месяцев, например:

using System.Globalization;
CultureInfo culInf = new CultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentCulture = culInf;
System.Threading.Thread.CurrentThread.CurrentUICulture = culInf;
comboBox1.DataSource = DateTimeFormatInfo.CurrentInfo.MonthNames;

Читайте также:


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices