在这种情况下,如何更改对象的名称?

时间:2017-01-23 10:55:16

标签: c# visual-studio for-loop calendar

我想用C#创建自己的日历。 因此我想创建与月份相同的面板。

我尝试用for循环来做,但它不起作用。 我认为问题是,对象的名称永远不会改变。

但是每次循环时如何更改对象的名称?

public void createPanel()
{
    if (DateTime.Now.Month == 1 || DateTime.Now.Month == 3 || DateTime.Now.Month == 5 || DateTime.Now.Month == 7 || DateTime.Now.Month == 8 || DateTime.Now.Month == 10 || DateTime.Now.Month == 12)
    {
        for (int i = 0; i == 31; i++)
        {
            int locationX = 12;
            int locationY = 74;
            //Create Panel
            Panel test = new Panel();
            //Fill Panel
            test.Name = "panel" + i;
            test.Width = 200;
            test.Height = 100;
            test.BackColor = Color.White;
            test.Location = new System.Drawing.Point(locationX, locationY);
            this.Controls.Add(test);
            test.Show();
            if(i == 7 || i == 14 || i == 21)
            {
                locationY += 106;
                locationX = 12;
            }
            locationX += 206;
        }
    }

2 个答案:

答案 0 :(得分:0)

for (int i = 0; i == 31; i++)

错了。你将永远不会到达for循环的内部,因为我等于0并且预期为31。

也许你的意思是:

for (int i = 0; i <= 31; i++)

我假设您的代码存在许多其他问题,但首先要解决此问题,并且可能会打开新的更具体的问题。

答案 1 :(得分:0)

您可能想要使用此代码来代替硬编码if语句中的月份:

DateTime.DaysInMonth(year, month);

所以你的循环应该类似于:

var numDays = DateTime.DaysInMonth(selectedYear, selectedMonth);
for (int i = 0; i < numDays; i++)
{
   // your code here
}

您可以从DateTime.Today获取所选的年份和月份,或者让用户自己选择它。