winforms 我的用户控件没有显示在窗体设计上

aiqt4smr  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(194)

我试图为我的项目创建一个日历,我创建了一个空白的用户控件,以便在一周的每一天使用它。
i创建的用户控件如下所示:

但是,当我运行. cs文件时,表单上没有任何变化,预期的输出应该如下所示:

我的表单输出,但没有任何"临时"用户控件:

这个问题的原因可能是什么?
这是我的代码:

private void displayDays()
{
    DateTime now = DateTime.Now;

    // getting the first day of the month
    DateTime startofthemonth = new DateTime(now.Year, now.Month, 1);

    // getting the count of days of the month
    int day = DateTime.DaysInMonth(now.Year, now.Month);

    // conver the startofthemont to integer
    int dayoftheweek = Convert.ToInt32(startofthemonth.DayOfWeek.ToString("d"));

    // i created here a blank user control from project >> add user control
    for(int i = 1; i < dayoftheweek; i++)
    {
        UserControlBlank ucblank = new UserControlBlank();
        // daycontainer is flowLayoutPanel
        daycontainer.Controls.Add(ucblank);
    }
}
qcbq4gxm

qcbq4gxm1#

startofthemonth.DayOfWeek已经是一个int,因此不需要将其转换为字符串,然后再转换回来。
问题是2023年1月的第一天是星期日,而星期日的值是零(0),所以循环永远不会运行,因为1不小于0!
如果目的是为一个月的每一天创建一个条目,那么您需要修改您的for循环:

// getting the count of days of the month
int daysInMonth = DateTime.DaysInMonth(now.Year, now.Month);
for(int i = 1; i <= daysInMonth; i++)
{
    UserControlBlank ucblank = new UserControlBlank();
    // daycontainer is flowLayoutPanel
    daycontainer.Controls.Add(ucblank);
}

如果只创建起始周,从每月的第一天开始,到第一周的最后一天(星期六)结束,则:

for(int i = startofthemonth.DayOfWeek; i <= DayOfWeek.Saturday; i++)
{
    UserControlBlank ucblank = new UserControlBlank();
    // daycontainer is flowLayoutPanel
    daycontainer.Controls.Add(ucblank);
}

相关问题