年度日历Winform c#

年度日历Winform c#,c#,winforms,calendar,C#,Winforms,Calendar,我正在寻找一种方法来发展这一点: 如你们所见,我需要将事件(绘制矩形)添加到日历中。 尽管我花了无数个小时的研究,但我找不到任何接近我想要的东西,所以我要从头开始 你知道我该怎么做吗?我应该使用datagridview吗 实现这一点的最佳方法是使用。特别看一下方法和步骤 用于绘制从中借用的不同单元的代码 谢谢你的提问!然而,这并不是堆栈溢出真正要回答的问题。一旦您对正在编写的代码遇到的特定问题有了特定问题,请随时返回。@AndrewBarber祝您在版主选举中好运!阅读这篇有帮助的回复让我觉得

我正在寻找一种方法来发展这一点:

如你们所见,我需要将事件(绘制矩形)添加到日历中。 尽管我花了无数个小时的研究,但我找不到任何接近我想要的东西,所以我要从头开始


你知道我该怎么做吗?我应该使用datagridview吗

实现这一点的最佳方法是使用。特别看一下方法和步骤

用于绘制从中借用的不同单元的代码


谢谢你的提问!然而,这并不是堆栈溢出真正要回答的问题。一旦您对正在编写的代码遇到的特定问题有了特定问题,请随时返回。@AndrewBarber祝您在版主选举中好运!阅读这篇有帮助的回复让我觉得我正确地提高了你的提名。如果你想画很多,比如箭头,很多线,你可以尝试WPF而不是Winforms。如果您只需要显示日历而不需要编辑它,我可能只使用绘图库,而不使用datagrid。该日历将处于只读模式。我没有想到绘图库,我认为开发它会很痛苦。可能会很有趣。我还将研究TableLayoutPanel类,似乎我已经离开了很长的一天。@user2071260所以TableLayoutPanel非常完美,请参阅编辑我理解其逻辑。谢谢你,先生!!
 private void Form_Load(object sender, EventArgs e) {
    this.tableLayoutPanel1.CellPaint += new TableLayoutCellPaintEventHandler(tableLayoutPanel1_CellPaint);
 }


void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
    if (e.Row == 0 || e.Row == 2) {
        Graphics g = e.Graphics;
        Rectangle r = e.CellBounds;
        g.FillRectangle(Brushes.Blue, r);
    }
}