通过事件处理程序传递参数

时间:2014-03-07 03:45:55

标签: c# list handler designer

我想传递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);

我不知道该放什么来解决这个问题。既然我在这里,我认为我不应该通过我的事件传递参数?我该如何解决这个问题?

1 个答案:

答案 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);
    }
}