我想用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;
}
}
答案 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获取所选的年份和月份,或者让用户自己选择它。