我想传递List< int> ScoresList通过----------------------------------- 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);
}
}
要访问--------------------------------------------- --------------------------------- ^我列表中的分数数。
当我这样做时,我可以访问我的ScoresList,但是,我得到了一个“
'lstStudents_SelectedIndexChanged'的重载与委托不匹配 'System.EventHandler'。
错误更具体地位于我的设计器中。
this.lstStudents.SelectedIndexChanged += new System.EventHandler(this.lstStudents_SelectedIndexChanged);
我不知道该放什么来解决这个问题。既然我在这里,我认为我不应该通过我的事件传递参数?我该如何解决这个问题?
答案 0 :(得分: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);
}
}