Я хочу увеличить дату в моем заголовке datagridview
Я работаю над программным обеспечением посещаемости. У меня возникла проблема: я хочу увеличить дату в каждом заголовке.
Здесь вы можете увидеть мой datagridview: https://imgur.com/a/hP0Yedo
На самом деле, я хочу показать посещаемость за весь месяц, и я хочу получить даты и дни от datetimepicker.
Ребята, помогите, пожалуйста, дайте мне решение или скажите, как я могу это сделать, пожалуйста.
Спасибо
Вот мой код:
int nnnnn2 = 0;
private void dataGridView4_Paint(object sender, PaintEventArgs e)
{
nnnnn2 = DateTime.DaysInMonth(dateTimePicker1.Value.Year, dateTimePicker1.Value.Month);
string[] weeks = new string[nnnnn2];
string[] date = new string[nnnnn2];
for (int i = 0; i < nnnnn2;i++)
{
newvar = dateTimePicker2.Text;
//newvar = (newvar.ToString().Substring(0, newvar.ToString().Length - 11));
DateTime dt = DateTime.Parse(newvar);
weeks[i] = dt.DayOfWeek.ToString();
date[i] = newvar;
}
for (int j = 0; j < (weeks.Count()); j += 3)
{
Rectangle r1 = this.dataGridView4.GetCellDisplayRectangle(j, -1, true);
int w2 = this.dataGridView4.GetCellDisplayRectangle(j + 1, -1, true).Width;
r1.X += 1;
r1.Y += 1;
r1.Width = r1.Width * 3 - 2;
r1.Height = r1.Height / 2 - 2;
e.Graphics.FillRectangle(new SolidBrush(this.dataGridView4.ColumnHeadersDefaultCellStyle.BackColor), r1);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(date[j / 3] + "\n" + weeks[j / 3],
this.dataGridView4.ColumnHeadersDefaultCellStyle.Font,
new SolidBrush(this.dataGridView4.ColumnHeadersDefaultCellStyle.ForeColor),
r1,
format);
}
}
1 ответ
Я решил это сам, вот решение:
private void dataGridView4_Paint(object sender, PaintEventArgs e)
{
var startDate = dateTimePicker2.Value.Date;
var endDate = dateTimePicker1.Value.Date;
List<string> weeks = new List<string>();
List<string> dates = new List<string>();
while (startDate <= endDate)
{
weeks.Add(startDate.DayOfWeek.ToString());
dates.Add(startDate.Date.ToString());
startDate = startDate.AddDays(1);
}
for (int j = 0; j < (weeks.Count() * 3); j += 3)
{
Rectangle r1 = this.dataGridView4.GetCellDisplayRectangle(j, -1, true);
int w2 = this.dataGridView4.GetCellDisplayRectangle(j + 1, -1, true).Width;
r1.X += 1;
r1.Y += 1;
r1.Width = r1.Width * 3 - 2;
r1.Height = r1.Height / 2 - 2;
e.Graphics.FillRectangle(new SolidBrush(this.dataGridView4.ColumnHeadersDefaultCellStyle.BackColor), r1);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(dates[j / 3]+"\n"+weeks[j / 3],
this.dataGridView4.ColumnHeadersDefaultCellStyle.Font,
new SolidBrush(this.dataGridView4.ColumnHeadersDefaultCellStyle.ForeColor),
r1,
format);
}
}