2014-03-07 4 views
1

전달하려는 목록 < int> ScoresList through ------------------------------ ----- V이벤트 처리기를 통해 매개 변수 전달

private void lstStudents_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     int target = lstStudents.SelectedIndex; 
     if (target != -1) 
     { 
      Student student = (Student)students[target]; 
      txtScoreCount.Text = Convert.ToString(ScoresList.Count); 
     } 
    } 

액세스하려면 ----------------------------------- -------------------------------------------^내 점수의 수 명부. 내가 할 때

, 그러나 나는, 내가 'lstStudents_SelectedIndexChanged'일치를위한 "

과부하 '은 System.EventHandler를'위임을 얻을, 내 ScoresList에 액세스 할 수 있습니다.

오류 내 디자이너에 더 구체적으로 위치해 있습니다.

this.lstStudents.SelectedIndexChanged += new System.EventHandler(this.lstStudents_SelectedIndexChanged); 

여기에 무엇을 넣어야할지 모르겠다. 이자형. 내가 여기 있기 때문에 나는 나의 이벤트를 통해 매개 변수를 전달해서는 안된다고 생각한다. 어떻게 해결할 수 있습니까?

+0

나는 또한 시도했다 : 이 txtScoreCount.Text = Convert.ToString (Student.ScoresList.Count) 지금은 개체 참조가 비 정적 필드에 필요한 얻을 .... 도움이되지 않습니다 저도 그래요. – user3390729

답변

1

이벤트 처리기에 매개 변수를 추가하는 것은 의미가 없습니다. 매개 변수 값 전달의 책임자를 생각해보십시오. 이벤트 처리기 은 해당 이벤트 발생시 시스템에 의해 호출됩니다. 또한 미리 정의 된 특정 서명을 따르고 매개 변수를 변경하여 메서드 시그니처를 변경해야하는 이벤트 처리기 메서드가 있으므로 해당 오류 메시지가 나타납니다.

ScoresList을 전역 변수로 선언하면 이벤트 처리기 메서드를 포함하여 동일한 범위의 메서드에서 액세스 할 수 있습니다.

private List<int> ScoresList = new List<int>(); 

private void lstStudents_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    int target = lstStudents.SelectedIndex; 
    if (target != -1) 
    { 
     Student student = (Student)students[target]; 
     txtScoreCount.Text = Convert.ToString(ScoresList.Count); 
    } 
} 
+0

Sooooo, 가깝습니다. 내 문제가 올바른 목록을 얻는 중입니다 다른 목록의 ScoresList 목록 ScoresList. 내 수업 학생의 경우 각 개별 목록에 액세스 할 수 있지만 목록 내 Form1 코드의 ScoresList가 더 어려워지고 있습니다. 선택한 학생의 점수를 계산하여 표시하기를 원합니다. – user3390729

+0

그것을 알아 냈어! 전역 선언을 사용하여 빈 List ScoresList를 만듭니다. 그런 다음 내 목표 변수를 사용하여 학생 컬렉션 (코드 제외)에서 어떤 학생을 선택할 수있었습니다. txtScoreCount.Text = Convert.ToString (students [target] .ScoresList.Count); – user3390729

+0

= 아니, 아직 투표 할 수 없습니다. – user3390729

관련 문제