У меня есть приложение 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 , форма не отвечает в течение еще нескольких секунд, в отличие от предыдущего поведения, а также ScrollBars
DataGridView
элементы управления затемнены .Мол, буквально почернел . Хотя, 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();
}
}