Программирование выпадающих списков - C#
Формулировка задачи:
Добрый день!
На форме три выпадающих списка: день, месяц, год.
Изменение любого из списков меняет содержимое остальных списков. Например, в феврале максимальное количество дней 28 или 29 в високосный год. В некоторых месяцах 31 день, а в других - 30.
Решение задачи: «Программирование выпадающих списков»
textual
Листинг программы
using System;
using System.Windows.Forms;
namespace WinForms
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
DateTime dtNow = DateTime.Now;
SetDayOfMonth(dtNow);
InintializeMonth();
SetMonth(dtNow);
comboBoxMonth.SelectedIndexChanged += new EventHandler(comboBoxMonth_SelectedIndexChanged);
}
void comboBoxMonth_SelectedIndexChanged(object sender, EventArgs e)
{
DateTime dtNow = DateTime.Now;
int daysInMonth = DateTime.DaysInMonth(dtNow.Year, comboBoxMonth.SelectedIndex + 1);
int selectedDay = dtNow.Day < daysInMonth ? dtNow.Day : daysInMonth;
SetDayOfMonth(new DateTime(dtNow.Year, comboBoxMonth.SelectedIndex + 1, selectedDay));
}
private void SetDayOfMonth(DateTime dateTime)
{
int quantityDays = DateTime.DaysInMonth(dateTime.Year, dateTime.Month);
int offset = 1;
int quantityIterations = quantityDays + offset;
comboBoxDay.Items.Clear();
for (int i = offset; i < quantityIterations; i++)
comboBoxDay.Items.Add(i < 10 ? "0" + i.ToString() : i.ToString());
comboBoxDay.SelectedIndex = dateTime.Day - offset;
}
public void InintializeMonth()
{
string[] monthes = {
"january", "february", "march", "april", "may", "june", "july",
"august", "september", "october", "november", "december" };
for (int i = 0; i < monthes.Length; i++)
comboBoxMonth.Items.Add(monthes[i]);
}
public void SetMonth(DateTime dateTime)
{
comboBoxMonth.SelectedIndex = dateTime.Month - 1;
}
}
}