作者mimi9126 (烦呀)
看板C_Sharp
标题[问题] 自订Cell遇到RowIndex=-1
时间Wed Apr 17 14:05:42 2013
刚刚研究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
1F:→ yishin0517:请问你有先debug过嘛?可以让人看嘛 04/17 17:44
debug过的意思是?
我下中断点看过,在dataGridView.Rows.Add(n)之後
会进到GetPreferredSize()里面n+1次,前n次RowIndex=0,第n+1次RowIndex=-1
2F:→ Abbee:那就在函式一开始作检查,-1就跳出 04/17 23:24
我知道这样可以解决,但是想知道出现这情况的原因...
3F:→ andymai:可以这样override掉吗?我没有特别去查~但是在覆写别人的东 04/18 01:04
4F:→ andymai:西前应该要先搞清楚人家的运作流程~随便覆写很容易出现未 04/18 01:05
5F:→ andymai:预期的状况~不是吗? 04/18 01:06
所以我发这篇文就是想搞清楚啊...
在发这篇文之前,我也在网路上找过蛮多次就是没找到答案
如果有的话,我也想找到各元件详细运作流程文件大全之类的来看,官方更佳
更甚者,最好可以有source code直接查,连问都不用问,偏偏这东西是微软的
※ 编辑: mimi9126 来自: 114.43.94.3 (04/18 01:23)