[英]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.