2017-01-23 4 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++) 

間違っています。私はあなたのコードと他の問題の多くがありますと仮定してい

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

を:私は0に等しく、31

ことが期待ので、たぶん、あなたは意味、forループの内部に到達することはありませんこれを最初に修正し、新しい、より具体的な質問を開くことができます。代わりに、あなたのif文でヶ月をハードコーディングの

0

、あなたの代わりにこれを使用することがあります:

DateTime.DaysInMonth(year, month); 

だからあなたのループが何かを見なければならないように:あなたが選択し得ることができます

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

DateTime.Todayから年月を選択するか、ユーザーが自分で選択できるようにします。

関連する問題