2011-12-21 6 views
0

私には、月が初めの日と月が何日あるかを示すメソッド名addDaysがあります。このメソッドは、毎週の月の各日を表すテーブル7x6に動的ラベルを追加します。また、各ラベルにイベントを追加して、クリックできるようにしました。私が抱えている問題は、その人がクリックしたラベルを読むことができる必要があるということです。アプリケーションを実行してカレンダーを作成し、月の初めをクリックすると、1のラベルのテキストをキャプチャできるようになります。
ここに私のaddDaysメソッドのコードがあります。動的に作成されたラベルからラベルテキストを読み取る際に助けが必要

private void addDays(int day,int totaldays) 
    { 
      int reset = 0; 
      Label newlabel; 
      string label; 
      int labelnum; 
      Console.WriteLine("testoutputbeforebig forloop"); 
      //DayTableHold.Controls.Add(newlabel, 0, 6); 
      int numday = 0; 
      for (int coll = 0; coll <= 7; coll++) 
      { 

        for (int row = 0; row <=6; row++) 
        { 
         if (numday < totaldays) 
         { 
          newlabel = new Label(); 
          newlabel.AutoSize = true; 


          if (row==day &&coll==0) 
          { 
           labelnum = numday + 1; 
           label = labelnum.ToString(); 
           newlabel.Text = label; 
           newlabel.Margin = new System.Windows.Forms.Padding(17, 0, 10, 0); 
           newlabel.Click += new System.EventHandler(days_Click); 
           DayTableHold.Controls.Add(newlabel, row, coll); 

           numday++; 
           reset = 1; 
           if (row == 6) 
           { 
            coll = 1; 

           } 
           else coll = 0; 
           Console.WriteLine("testoutput1 " + numday + " " + label); 

          } 
          else if (reset == 1) 
          { 
           labelnum = numday + 1; 
           label = labelnum.ToString(); 
           newlabel.Text = label; 
           newlabel.Margin = new System.Windows.Forms.Padding(17, 0, 10, 0); 
           newlabel.Click += new System.EventHandler(days_Click); 
           DayTableHold.Controls.Add(newlabel, row, coll); 
           numday++; 
           Console.WriteLine("test output2 " + numday + " " + label); 
          } 



         } 



       } 



     } 

    } 

これは、ラベルの私のEventHandlerは、あなたがそれを作成するときは、Label上のいくつかのイベントにフックアップする必要が

private void days_Click(object sender, EventArgs e) 
    { 
     //here is were i want to capture the labels of the clicks. 
     count++; 
     Console.WriteLine("day was click"+ count); 


    } enter code here 
+0

を送信者、EventArgs e);その中でthis.label.Click + = new System.EventHandler(this.days_Click);あなたの例で正しく動作するようにこれを変更しなければなりません..同じイベントハンドラに対して - =を追加してください。 – MethodMan

答えて

3

クリックであるので、あなたの行の後:

newLabel = new Label(); 

Clickイベントのハンドラを追加する必要があります。

newLabel.Click += new EventHandler(days_Click); 

次に、あなたのClickイベントハンドラ内で、あなたはsenderオブジェクトからLabel得ることができます:あなたはまた、例えばイベントのデリゲートパブリックデリゲートのボイドのEventHandler(オブジェクトを作成++回数を定義コードを表示する必要が

Label selectedLabel = (Label)sender; 
string labelText = selectedLabel.Text; 
+0

ありがとうございました。 –

+0

@ReyLopez役立つ回答をアップアップして、正しい答えを受け入れることを忘れないでください。 –

関連する問題