【问题标题】:i want to a increase date in my datagridview header我想在我的 datagridview 标题中增加日期
【发布时间】:2019-02-26 01:14:48
【问题描述】:

我正在开发考勤软件我面临一个问题,我想增加每个标题的日期。

在这里你可以看到我的数据网格视图: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);
            }
        }

【问题讨论】:

  • 两个日期之间的差距有多大,年份可以变化,如 2-11-18 到 2-4-19
  • 在不了解您想要完成的全部内容的情况下……按照您的描述处理这个问题似乎很“奇怪”。首先,似乎永远不会超过一 (1) 行?此外,如果一个月有三十 (30) 天,并且每天有三 (3) 列(进出总计)……那么会有一行 30x3 = “90”列?这看起来很奇怪。
  • 您是否考虑过通过添加“日期”列让网格中的每个“行”代表一个“日”日期?我建议您查找一些DateTime 属性和方法……您应该找到可以将“日”添加到日期的方法,例如……dt = dt.AddDays(1);。有一些这样的方法,我相信它们在添加/减去日期时会有所帮助。请记住,DateTime 对象是不可变的,因此,dt.AddDays(1) 返回一个新的 DateTime 对象并添加日期并且不会更改 dt
  • 错误没有被 dt = DT.AddDays(1) 解决;它;增加日期只是一次而不是连续请查看我的代码,如果你不介意请更正我的代码

标签: c# datagridview header datetimepicker time-and-attendance


【解决方案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);
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    相关资源
    最近更新 更多