在c#中使用datagridview控件时显示大量数据拖拉卡顿如何解决

  介绍

在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控件时显示大量数据拖拉卡顿如何解决