C# DataGridView性能改进

C# DataGridView性能改进,c#,winforms,datagridview,C#,Winforms,Datagridview,我最近开发了一个应用程序,上面有一个datagridview。经过几分钟的测试,我注意到性能非常差,在呈现数据时出现了问题(延迟、缓慢操作),我也在寻找解决方案,如启用虚拟模式等。。。没有用,请你建议或帮助我有没有一种方法,我可以提高性能和模式这段代码 这是我的代码: private void LoadTable() { var connection = Connection.prevzemiKonekcija(); var adapter1 = new

我最近开发了一个应用程序,上面有一个
datagridview
。经过几分钟的测试,我注意到性能非常差,在呈现数据时出现了问题(延迟、缓慢操作),我也在寻找解决方案,如启用虚拟模式等。。。没有用,请你建议或帮助我有没有一种方法,我可以提高性能和模式这段代码

这是我的代码:

private void LoadTable()
    {
        var connection = Connection.prevzemiKonekcija();

        var adapter1 = new MySqlDataAdapter();
        var sqlSelectAll = "SELECT * from prodavnica.artikli";
        adapter1.SelectCommand = new MySqlCommand(sqlSelectAll, connection);

        var table = new DataTable();
        adapter1.Fill(table);

        var bajndsors = new BindingSource();
        bajndsors.DataSource = table;


        dataGridView1.DataSource = bajndsors;

        dataGridView1.RowsDefaultCellStyle.BackColor = Color.Linen;
        dataGridView1.AlternatingRowsDefaultCellStyle.BackColor =
            Color.Cornsilk;


        /*
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
        dataGridView1.AutoResizeColumns();


        dataGridView1.RowsDefaultCellStyle.BackColor = Color.Bisque;
        dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige;
        dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None;

        dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;
        dataGridView1.DefaultCellStyle.SelectionForeColor = Color.Yellow;

*/


        dataGridView1.Columns[0].HeaderText = "РЕД.БР";
        dataGridView1.Columns[1].HeaderText = "ШИФРА";
        dataGridView1.Columns[2].HeaderText = "НАЗИВ";
        dataGridView1.Columns[3].HeaderText = "НАБАВНА ЦЕНА";
        dataGridView1.Columns[4].HeaderText = "ПРОДАЖНА ЦЕНА";
        dataGridView1.Columns[5].HeaderText = "КОЛИЧИНА";
        dataGridView1.Columns[6].HeaderText = "ДАНОК";
        dataGridView1.Columns[7].HeaderText = "ОПИС";
        dataGridView1.Columns[8].HeaderText = "ДОЛГ ОПИС";
        dataGridView1.Columns[9].Visible = false;
        dataGridView1.Columns[10].HeaderText = "ЕДИНИЦА";
        dataGridView1.Columns[11].HeaderText = "ПРОФИТ";
        dataGridView1.Columns[12].HeaderText = "ПРОИЗВОДОТЕЛ";

            this.dataGridView1.VirtualMode = true;

            //dataGridView1.Columns["MakArtikal"].Visible = false;


                    connection.Close();
}

使用SqlDataReader要快得多,检查我们显示了多少行?表上有54.320条记录。所以我在想我应该显示多少条记录,是否有办法将它们全部加载。通常的答案是:用户是否需要查看54K条记录?您要显示多少列?是否需要显示所有这些内容?为什么VirtualMode不起作用?这些记录是关于产品的信息,因此由texboxt过滤
datagridview
。因此答案是肯定的,所有记录都需要存在。正如您所看到的,virutalmode已启用,但是没有结果。请参阅此答案中的第二个要点: