[問題] 自訂Cell遇到RowIndex=-1

看板C_Sharp (C#)作者 (煩呀)時間12年前 (2013/04/17 14:05), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
剛剛研究datagridview的其他屬性時才發現 http://i.imgur.com/2EQS9qA.png
應該這就是解答了吧 ============================================================================== 手上的案子有個需求,需要將某個class C加入datagridview中 (使用vc# 2010 express) 因此我實作了對應的 SubColumn:DataGridViewColumn 和 SubCell:DataGridViewCell 而我希望view可以按照cell的內容調整大小 所以在SubCell中override GetPreferredSize()函式 但在執行程式的時候,在我自己寫的SubCell.GetPreferredSize()裡面會收到 ArgumentOutOfRangeException,原因是this.RowIndex的值是-1 想問的是,為什麼會有這樣的情況出現 雖然可以先檢查RowIndex的範圍,超出範圍直接回傳base.GetPreferredSize()來迴避 但我想知道是在程式流程中的哪個過程產生這個情況,代表涵義是什麼 如果有了解原因的版友希望能替我解惑,有需要的話我再補充更詳細的情境描述 -- Looking for the place where a heart feels at ease. Then, aim at the new future. While it doesn't know, scene changes someday, and very warm wind will blow in place. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.208.83.253

04/17 17:44, , 1F
請問你有先debug過嘛?可以讓人看嘛
04/17 17:44, 1F
debug過的意思是? 我下中斷點看過,在dataGridView.Rows.Add(n)之後 會進到GetPreferredSize()裡面n+1次,前n次RowIndex=0,第n+1次RowIndex=-1

04/17 23:24, , 2F
那就在函式一開始作檢查,-1就跳出
04/17 23:24, 2F
我知道這樣可以解決,但是想知道出現這情況的原因...

04/18 01:04, , 3F
可以這樣override掉嗎?我沒有特別去查~但是在覆寫別人的東
04/18 01:04, 3F

04/18 01:05, , 4F
西前應該要先搞清楚人家的運作流程~隨便覆寫很容易出現未
04/18 01:05, 4F

04/18 01:06, , 5F
預期的狀況~不是嗎?
04/18 01:06, 5F
所以我發這篇文就是想搞清楚啊... 在發這篇文之前,我也在網路上找過蠻多次就是沒找到答案 如果有的話,我也想找到各元件詳細運作流程文件大全之類的來看,官方更佳 更甚者,最好可以有source code直接查,連問都不用問,偏偏這東西是微軟的 ※ 編輯: mimi9126 來自: 114.43.94.3 (04/18 01:23)
文章代碼(AID): #1HRZkwro (C_Sharp)
文章代碼(AID): #1HRZkwro (C_Sharp)