DataGridView 5000行数据就发生StackOverFlow错误

SethFeng 发布于 2015/05/27 10:06
阅读 210
收藏 0

.Net 2.0环境下,DataGridView控件,用List<Object>做数据源,或BindingSource,列自动生成。

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

try catch扑捉不到,断点更不知放哪里。

万能的OSCer, 快帮帮我吧。

 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;
        }


加载中
0
气质舞王尼古拉斯赵四
气质舞王尼古拉斯赵四

两个参考:

http://stackoverflow.com/questions/14145811/stackoverflowexception-with-datagridview

这个说“Disabling the Tablet PC Input Service

https://msdn.microsoft.com/zh-cn/library/system.stackoverflowexception(v=vs.110).aspx

这个说“从 .NET Framework 2.0 版开始,将无法通过 try-catch 块捕获 StackOverflowException 对象,并且默认情况下将终止相应的进程。


另外,不要说5000行的表格,500行的表格都是反人类的

0
BeckQin
BeckQin
你是怎么点最后一行?最后一行有按钮?
0
BeckQin
BeckQin
源程序看不到
0
houhuiliang
houhuiliang
数据内容太多,超出内存限制了,一次别load那么多,可以采用分页方式,每页load 10-20条内容。
0
SethFeng
SethFeng
谢谢 @春天花不开 ,你的回答提醒了我。  也谢谢各位。 在.net 2.0SP2上不会出现溢出。 先升级到.net SP2再测试看看。
返回顶部
顶部