簡體   English   中英

通過事件處理程序傳遞參數

[英]Passing a parameter though an event handler

我想通過----------------------------------- V傳遞List <int> ScoresList

    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);

我不知道該放在哪里解決該問題。 因為我在這里,所以我假設我不應該通過事件傳遞參數? 我該如何解決?

向事件處理程序添加參數沒有意義。 想想誰負責傳遞參數值? 事件處理程序在發生相應事件時由系統調用 事件處理程序方法還需要遵循特定的預定義簽名,並添加參數更改方法簽名,因此您收到了該錯誤消息。

可能的解決方案是將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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM