Как выделить указанную c дату из mysql в месячном календаре с помощью форм C#, Windows? - PullRequest
0 голосов
/ 08 июля 2020

Я геолог и пытаюсь составить табель рабочего времени для своей компании с плохими C# знаниями и обучением во время программирования.

У меня в форме месячный календарь, и сотрудник выбирает даты он / она работал и сохранял в datagridview (в столбцы dateStart и dateEnd на mysql, поэтому мы получили здесь интервал дат) .

Я хотел бы выделить (или выделите жирным шрифтом некоторые конкретные c посмотрите, что сотрудник может видеть, в какие дни он / она работал) интервал дат, который сохраняется в базе данных mysql. Итак, все занятые даты, которые вставлены в базу данных в прошлом, должны быть как-то отмечены.

Вы можете мне помочь? Большое спасибо.

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете использовать метод monthCalendar.AddBoldedDate (), чтобы выделить данные даты в monthCalendar жирным шрифтом. Вот простой пример для справки.

private void button_Click(object sender, EventArgs e)
{
    this.Enabled = false;
    timer1.Enabled = true;
    String connetStr = "connection string";
    MySqlConnection conn = new MySqlConnection(connetStr);
    try
    {
        conn.Open();
        string sql = "select * from  workday ";
        MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);
        DataSet ds = new DataSet();
        da.Fill(ds, "workday");
        dataGridView1.DataSource = ds.Tables[0].DefaultView;
        DateTime dateStart = (DateTime)ds.Tables[0].Rows[0][2];
        DateTime dateEnd = (DateTime)ds.Tables[0].Rows[0][3];
        DateTime[] dateRange = GetAllDays(dateStart, dateEnd);
        foreach (DateTime item in dateRange)
        {
            monthCalendar1.AddBoldedDate(item);
        }
    }
    catch (MySqlException ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        conn.Close();
    }

}

public DateTime[] GetAllDays(DateTime dt1, DateTime dt2)
{
    List<DateTime> listDays = new List<DateTime>();
    DateTime dtDay = new DateTime();
    for (dtDay = dt1; dtDay.CompareTo(dt2) <= 0; dtDay = dtDay.AddDays(1))
    {
        listDays.Add(dtDay);
    }
    return listDays.ToArray();
}
...