2017-01-23 6 views
1

Я хочу создать свой собственный календарь с 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; 
     } 
    } 
+1

Что вы подразумеваете под «это не работает». Получаете ли вы ошибку времени компиляции, ошибку времени выполнения или получаете только последний созданный объект? – nikovn

+1

Какое исключение он дает? –

+0

Название какого объекта? – Bauss

ответ

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

неправильно. Вы никогда не достигнете внутри для цикла, так как я равен 0, и, как ожидается, будет 31.

Может быть, вы имели в виду:

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

Я предполагаю, что есть много других проблем с вашим кодом , но исправить это первым и, возможно, открыть новые и более конкретные вопросы.

0

Вместо жесткого кодирования месяцев в вашей, если заявление, вы можете использовать вместо этого:

DateTime.DaysInMonth(year, month); 

Таким образом, ваш цикл должен выглядеть примерно так:

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

Вы можете получить выбранный год и месяц от DateTime.Today, или просто позволить пользователю выбрать его для себя.

Смежные вопросы