2014-03-07 64 views
1

我想通過通過列表< 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

我也試過: 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。在我的課的學生,我可以訪問每一個人名單,然而,上榜 ScoresList在我的Form1的代碼被證明更加困難。我想要選擇的學生成績進行統計和顯示。 – user3390729

+0

想通了!使用全局聲明創建一個空列表 ScoresList。然後能夠使用我的目標變量從我的學生集合中選擇哪個學生(不包括代碼)。 txtScoreCount.Text = Convert.ToString(學生[靶標] .ScoresList.Count); – user3390729

+0

沒有投票給你,雖然= /我還不夠酷。 – user3390729

相關問題