DataGridView 5000行数据就发生StackOverFlow错误

ucipl 2015-05-27 10:13:28
.Net 2.0环境下,DataGridView控件,用List<Object>做数据源,或BindingSource,列自动生成。

当数据源超过5000行,比如有10000行,下拉滚动条,用鼠标点击最后一行时,发生错误:未处理的“System.StackOverflowException”类型的异常出现在 System.Drawing.dll 中。

try catch扑捉不到,断点更不知放哪里。
...全文
146 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ucipl 2015-05-27
  • 打赏
  • 举报
回复
.net的DataGridView控件,拖到一个窗口上,属性都是默认属性,也没有定义任何事件处理代码,就上面几行代码。
Poopaye 2015-05-27
  • 打赏
  • 举报
回复
没堆栈信息吗?
白衣如花 2015-05-27
  • 打赏
  • 举报
回复
按照你说的现象,应该不是load里面的问题 而是触发了事件 之前我用dev的gridcontrol遇到过和你类似的栈溢出,我那个是出在RollCellStyle事件里面
ucipl 2015-05-27
  • 打赏
  • 举报
回复
当前单元格在0,0,往下拉滚动条,到最后一行,点击鼠标,就溢出了。
於黾 2015-05-27
  • 打赏
  • 举报
回复
不明白你这个"跳"是什么意思
ucipl 2015-05-27
  • 打赏
  • 举报
回复
List<MockEmployee> _datasource = new List<MockEmployee>(); BindingSource _datagridviewDatabinding = new BindingSource(); public TestDataGridView2() { InitializeComponent(); this.Load += new EventHandler(TestDataGridView2_Load); } void TestDataGridView2_Load(object sender, EventArgs e) { //绑定数据源 _datasource.Clear(); for (int _tmpi = 1; _tmpi < 50000; ++_tmpi) { _datasource.Add(new MockEmployee("E_" + _tmpi.ToString(), "Seth", 18, true, "1", 5000.5m)); } _datagridviewDatabinding.DataSource = _datasource; dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = _datagridviewDatabinding; dataGridView1.ReadOnly = false; }
ucipl 2015-05-27
  • 打赏
  • 举报
回复
行少没问题,从第1行跳到第3000行没问题,一次跳5000行以上,溢出。
於黾 2015-05-27
  • 打赏
  • 举报
回复
你确定行少就没问题? 比如一共只有2行数据,你点最后一行(第3行),不报错?
白衣如花 2015-05-27
  • 打赏
  • 举报
回复
你看看DataGridView控件是否绑定了鼠标进入,cell点击之类的事件? 我怀疑是有绑定事件,点击触发,递归过多,然后栈溢出
ucipl 2015-05-27
  • 打赏
  • 举报
回复
貌似找到原因:.net2.0机器上执行,会溢出,在.net2.0 SP2机器上不会溢出。 谢谢各位,先结贴。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧