Предоставленный код изменяет атрибуты пользовательского интерфейса, но поток не может перерисовать пользовательский интерфейс до тех пор, пока searchButton_Click не вернется.Таким образом, изменения, сделанные до события, никогда не применяются, потому что они переопределяются изменениями, внесенными после, которые затем применяются, когда метод возвращает.
Вместо этого обновите атрибуты пользовательского интерфейса перед запуском события:
searchButton.Enabled = false;
toolStripProgressBar1.Value = 0;
toolStripStatusLabel1.Visible = true;
m_changeRequestedEvents.Fire<String>("SearchTerm", searchTextBox.Text);
и из обработчика событий запустите запрос в отдельном потоке (BackgroundWorker), чтобы пользовательский интерфейс мог обновиться за это время:
private void View_OnSearchTermChangeRequest(Object sender, PropertyChangeRequestEventArgs<String> args)
{
m_search_bgw = new BackgroundWorker();
...
m_DBHandler.current_worker = m_search_bgw;
m_search_bgw.RunWorkerAsync(args.RequestedValue);
}
, а затем снова обновите пользовательский интерфейс вметод, который вызывается при завершении потока BackgroundWorker:
void UpdateView(DataView projects)
{
dataGridView1.DataSource = projects;
...
toolStripProgressBar1.Value = 100;
toolStripStatusLabel1.Visible = false;
}