я хочу увеличить дату в моем заголовке datagridview - PullRequest
0 голосов
/ 26 февраля 2019

Я работаю над программным обеспечением посещаемости. У меня возникла проблема: я хочу увеличить дату для каждого заголовка.

Здесь вы можете увидеть мое представление данных: 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 Ответ

0 голосов
/ 26 февраля 2019

Я решил это сам, вот решение:

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);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...