2012-01-24 15 views
-3
playerProfileID = (int)transfersDGV.SelectedRows[transfersDGV.CurrentRow.Index] 
            .Cells[0].Value; 

我收到一個錯誤消息:「索引超出範圍,必須是非負數,小於集合的大小。 我試圖從選定的行中選取第一個單元格的值。我究竟做錯了什麼?索引超出了所選行的第一個單元格的範圍

+3

是否沒有選擇行?還是它有零個單元格? – harold

+0

嘗試將代碼行分成兩行。一個選擇行,然後一個獲取單元格。哪一個會拋出錯誤呢? –

+0

沒有足夠的代碼或信息供任何人幫助您。哪一個索引是抱怨的那個? 「SelectedRows」或「Cells」?實際上是否選擇了任何行?什麼是'transfersDGV.CurrentRow.Index'?你有沒有做過任何基本的調試? – CodingGorilla

回答

2

你要使用

transfersDGV.SelectedRows[0].Cells[0].Value 

SelectedRows包含一組當前選擇的行。如果您選擇1,則它包含該行。如果選擇10,它將包含那些10

您需要檢查,看是否有選擇然後任何行採取的第一個(或哪一個你需要),以獲得第一個單元格的值。

CurrentRow是當前具有焦點的行,並且可能或可能不在所選行中。

+0

沒錯。謝謝。 –

0

SelectedRows包含選定行的數組。如果選擇了2行,則其中最大可訪問索引將爲1.您嘗試通過CurrentRow.Index屬性訪問它,該屬性是整個網格中行的相對位置。所以你會得到索引超出範圍的異常。如果您 要

選定行拿起第一個單元格的值

你應該使用

(int)transfersDGV.SelectedRows[0].Cells[0].Value; 
0

我不能肯定地說,不知道是什麼類型你在那裏的代碼中使用...是transfersDGV某種類型的迭代器?一旦迭代器遍歷整個集合,一些迭代器指向集合的結尾或結束後。另一種選擇是它需要以某種方式進行初始化。 Cells也可能是空的問題,在這種情況下Cells[0]實際上會導致異常。