Как установить интернационализацию для элемента управления DateTimepicker или Calendar WinForm в .Net, если культура желаний отличается от той, которая установлена на ПК?





Для DateTimePicker
dtp.Format = DateTimePickerFormat.Custom;
dtp.CustomFormat = "yyyy-MM-dd"; // or the format you prefer
Формат используется только для отображения текущей даты, но если вы хотите его выбрать, элемент управления datetimepicker покажет полную дату в зависимости от региональных настроек.
Кажется, невозможно изменить культуру. См. Этот Статья в базе знаний.
Ссылка на статью в KB мертва ... :( К настоящему времени уже должны были исправить ... 8 лет спустя ...
Обе эти ссылки сейчас не работают
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("fr");
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
Это не повлияет на региональные настройки Windows, а только на текущую культуру пользовательского интерфейса и текущую культуру текущего потока (как следует из названий свойств). Но элемент управления DateTimePicker ищет только региональные настройки Windows, поэтому это не имеет значения.
Думаю, есть обходной путь.
код
dateTimePicker.Format = DateTimePickerFormat.Custom;
string[] formats = dateTimePicker.Value.GetDateTimeFormats(Application.CurrentCulture);
dateTimePicker.CustomFormat = formats[0];
GetDateTimeFormats () создает не строки формата (которые можно использовать для форматирования), а форматированные строки (результат форматирования). Назначать такую строку для .CustomFormat не имеет смысла. Проголосовал бы за ответ, но у меня нет репутации ...
Основываясь на предыдущем решении, я думаю, что лучше:
dateTimePicker.Format = DateTimePickerFormat.Custom;
dateTimePicker.CustomFormat = Application.CurrentCulture.DateTimeFormat.ShortDatePattern;
Возвращает мне «дд-МММ-гг», как это помогает изменить культуру?
Используйте telerik radDateTimePicker и напишите этот код после InitializeComponent (), а вместо «fa-IR» используйте вашу культуру.
Application.CurrentCulture = new CultureInfo("fa-IR");
radDateTimePicker1.Format = DateTimePickerFormat.Custom;
radDateTimePicker1.CustomFormat = Application.CurrentCulture.DateTimeFormat.ShortDatePattern;
Настройка формата - не единственное, что зависит от культуры. Он контролирует множество других вещей, например, является ли первый день недели воскресеньем или понедельником.