介绍问题描述:
在c#中使用datagridview控件时显示大量数据拖拉卡顿如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
问题描述:
由于在使用SQL查询大量的数据并一次显示到datagridview控件,出现拖拉的时候卡顿。
解决方法:
1。首先分页。
2。其次把显示控件设置双缓冲区。
解决过程如下:
1。设置dataGridView双缓冲代码如下,需要引用反射命名空间
, Type dgvType =, this.dataGridView1.GetType (); ,,,,,PropertyInfo pi =, dgvType.GetProperty (“DoubleBuffered",, BindingFlags.Instance |, BindingFlags.NonPublic); ,,,,,pi.SetValue (this.dataGridView1,,真的,,null);
2。自己定义分页操作控件,上一页,下一页,首页,尾页,在加载形式的时候添加事件。并为他们写一个操作事件
, private void Form1_Load (object ,发送方,EventArgs e) ,,,{ ,,,,,this.btn_EndPage.Click +=, Ctrl_Click; ,,,,,this.btn_FirstPage.Click +=, Ctrl_Click; ,,,,,this.btn_LastPage.Click +=, Ctrl_Click; ,,,,,this.btn_NextPage.Click +=, Ctrl_Click; ,,,,,//this.SetStyle (ControlStyles.OptimizedDoubleBuffer |, ControlStyles.ResizeRedraw |, ControlStyles.AllPaintingInWmPaint,,真的); ,,,,,//this.UpdateStyles (); ,,,,, ,, ,,,} ,,,private void Ctrl_Click (object ,发送方,EventArgs e) ,,,{ ,,,,,Button btn =,(按钮)发送者; ,,,,,if (btn.Text ==, this.btn_EndPage.Text) ,,,,,{ ,,,,,,,if (currentPage ==, pageCount) ,,,,,,,{,返回;} ,,,,,,,currentPage =, pageCount; ,,,,,,,LoadPage (); ,,,,,} ,,,,,else if (btn.Text ==, this.btn_FirstPage.Text) ,,,,,{ ,,,,,,,if (==currentPage 1) ,,,,,,,{,返回;} ,,,,,,,currentPage =, 1; ,,,,,,,LoadPage (); ,,,,,} ,,,,,else if (btn.Text ==, this.btn_LastPage.Text) ,,,,,{ ,,,,,,,if (==currentPage 1) ,,,,,,,{,返回;} ,,,,,,,当前页, ,,,,,,,LoadPage (); ,,,,,} ,,,,,else if (btn.Text ==, this.btn_NextPage.Text) ,,,,,{ ,,,,,,,if (currentPage ==, pageCount) ,,,,,,,{,返回;} ,,,,,,,当前页+ +; ,,,,,,,LoadPage (); ,,,,,} ,,,,, ,,,,,{ ,,,,,,,MessageBox.Show (“error"); ,,,,,} ,,,}
3。下面代码是分页方法,加载页面
, # region datagridview 排序 ,,,///,& lt; summary> ,,,///,每页记录数 ,,,///,& lt;/summary> ,,,private int pageSize =, 50; ,,,///,& lt; summary> ,,,///,总记录数 ,,,///,& lt;/summary> ,,,private int recordCount =, 0; ,,,///,& lt; summary> ,,,///,总页数 ,,,///,& lt;/summary> ,,,private int pageCount =, 0; ,,,///,& lt; summary> ,,,///,当前页 ,,,///,& lt;/summary> ,,,private int currentPage =, 0; ,,,///,& lt; summary> ,,,///,分页的方法 ,,,///,& lt;/summary> ,,,///,& lt; param name=皊tr"祝辞& lt;/param> ,,,private void PageSorter () null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null在c#中使用datagridview控件时显示大量数据拖拉卡顿如何解决