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扑捉不到,断点更不知放哪里。
...全文
192 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机器上不会溢出。 谢谢各位,先结贴。
代码下载链接: https://pan.quark.cn/s/90fbf78c3289 "1元云购"是一种依托互联网的购物方式,用户仅需投入微小的资金(一般为一元)便有机会赢取高价值商品。此类模式常借助抽奖机制来判定获胜者,从而吸引众多用户加入。"1元云购源代码"是承载该业务流程的程序代码,其用途在于搭建一个完整的1元云购系统。 在构建1元云购源代码的过程中,主要包含以下几个核心技术要点: 1. **数据库架构**:为了有效存储商品详情、用户资料、交易历史及开奖结果,必须设计科学合理的数据库框架。这包括商品数据表、用户信息表、订单记录表和开奖记录表等,确保数据的统一性与完整性。 2. **支付渠道对接**:1元云购平台需与第三方支付服务(例如支付宝、微信支付)进行对接,以实现用户的在线支付操作。这涉及API接口调用、交易状态同步、退款流程管理等环节。 3. **随机数生成策略**:抽奖过程的核心在于公平透明地选定获奖者,通常采用随机数生成策略来实现。该策略需保障每位参与者拥有相等的获奖机会,同时防止欺诈行为。 4. **用户界面开发**:卓越的用户体验是吸引参与者的关键因素。前端页面应兼具视觉吸引力与操作便捷性,清晰展示商品信息、购买步骤、中奖规范等,并提供用户注册、登录、查询订单等功能。 5. **服务器程序设计**:后端系统负责处理用户请求,如管理订单、计算中奖号码、更新数据库信息等。这部分通常采用PHP等服务器端技术实现,需应对并发访问与高负载情形。 6. **安全措施**:1元云购平台可能面临恶意攻击,例如SQL注入、XSS跨站脚本攻击等。因此,源代码需遵循安全编程准则,对用户输入进行过滤与校验,同时运用HTTPS等加密手段保障数据传输安全。 7. **...

111,128

社区成员

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

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

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