2011-12-21 3 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); 
          } 



         } 



       } 



     } 

    } 

이 라벨에 대한 내 이벤트 핸들러는 당신이 그것을 만들 때의 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 전자); 그 안에 뭔가 this.label.Click + = new System.EventHandler (this.days_Click); 귀하의 예제에 대해 올바르게 작동하도록 변경해야합니다 .. 또한 동일한 이벤트 처리기에 대해 = - 추가하십시오 – MethodMan

답변

3

클릭 그래서 당신의 줄 끝

newLabel = new Label(); 

Click 이벤트에 대한 처리기를 추가해야합니다.

newLabel.Click += new EventHandler(days_Click); 
,

그런 다음 Click 이벤트 핸들러 내부에, 당신은 sender 개체에서 Label를 얻을 수 있습니다 :

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

감사 슬레 드. –

+0

@ReyLopez 유용한 답변을 upvote하는 것을 잊지 마시고 정답을 수락하십시오. –

관련 문제