полосы прокрутки в datagridview затемнены backgroundWorker - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть приложение c # WinForms, у него есть некоторые параметры поиска (TextBox и ComboBox) и поиск Button, ниже этого GroupBox два элемента управления DataGridView, расположенные рядом.Затем у меня есть PictureBox, помещенный поверх DataGridView элементов управления, свойство Visible которых я установил на False.Тогда у меня тоже есть BackgroundWorker.Для события button1_Click я устанавливаю свойство PictureBox's Visible на True и вызываю backgroundWorker1.RunWorkerAsync();.На backgroundWorker1_DoWork(object sender, DoWorkEventArgs e), я делаю выборку записей и заполняю DataGridView элементы управления.На backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e), я звоню pictureBox3.Hide(); Однако, с тех пор, как я добавил эту функциональность loader , форма не отвечает в течение еще нескольких секунд, в отличие от предыдущего поведения, а также ScrollBarsDataGridView элементы управления затемнены .Мол, буквально почернел . Хотя, DataGridView элементы управления все еще можно прокручивать.Сама форма имеет DoubleBuffered, установленную на True.Кроме того, я сделал DataGridView элементы управления DoubleBuffered через Reflection, например,

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

Пожалуйста, помогите мне с проблемной (жирным шрифтом).Спасибо.

РЕДАКТИРОВАТЬ - DoWork Код

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            dataGridView1.DataSource = null;
            dataGridView2.DataSource = null;
            if (btn2d.Checked && btn3d.Checked)
            {
                searchdata1();
                searchdata2();
            }
            if (!btn2d.Checked && !btn3d.Checked)
            {
                searchdata1();
                searchdata2();
            }
            if (btn2d.Checked && !btn3d.Checked)
            {
                searchdata1();
            }
            if (!btn2d.Checked && btn3d.Checked)
            {
                searchdata2();
            }
        }
...