Я хочу использовать метод DoubleBuffered на моем Datagridview, чтобы сделать прокрутку более плавной - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь сделать мое представление данных лучше при прокрутке, потому что похоже, что я использую ПК с 2000 или хуже. При поиске я наткнулся на метод DoubleBuffered, который, как говорят все, делает вещи лучше.

Когда я его использую, строка dataGridView2.DoubleBuffered (true) становится красной с сообщением об ошибке: CS1955 C # Невозвратный элемент нельзя использовать как метод. Здесь невозможно получить доступ к защищенному свойству DoubleBuffered.

Если вы не можете помочь мне с ошибкой, возможно, укажите способ сделать прокрутку более плавной.

using System.Windows.Forms;
using System.Data.OleDb;
using System.Reflection;

namespace WarehouseManagementToolv1
{
    public partial class OrdersForm : Form
    {

        public SecondaryCallDB.GetDatabase _GetDatabase;
        private OleDbConnection connection = new OleDbConnection();

        public OrdersForm()
        {
            InitializeComponent(); 
            _GetDatabase = new SecondaryCallDB.GetDatabase();
        }

        private void btnLoadTable_Click_1(object sender, EventArgs e)
        {
            dataGridView2.DataSource = _GetDatabase.GetFullOrderDatabase();
            dataGridView2.DoubleBuffered(true);
        }

        public void DoubleBuffered(DataGridView dgv, bool setting)
        {
            Type dgvType = dgv.GetType();
            PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
                BindingFlags.Instance | BindingFlags.NonPublic);
            pi.SetValue(dgv, setting, null);
        }
    }
}

1 Ответ

0 голосов
/ 06 ноября 2019

Вы должны либо поместить этот метод в статический класс и превратить его в метод расширения, выполнив следующее:

public static void DoubleBuffered(this DataGridView dgv, bool setting)
        {
            Type dgvType = dgv.GetType();
            PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
                BindingFlags.Instance | BindingFlags.NonPublic);
            pi.SetValue(dgv, setting, null);
        }

Или вы должны вызывать метод как обычный метод.

DoubleBuffered(dataGridView2, true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...