Чего я хочу достичь:
Шаг 1: Когда форма загружается, я хотел отобразить форму загрузки (в виде диалога), которая содержит индикатор выполнения и метку прогресса.
Шаг 2: Пока это происходит, я хочу запустить BackgroundWorker
, чтобы извлечь записи из базы данных и заполнить мой DataTable
. BackgroundWorker
обновит форму загрузки завершенных этапов.
Шаг 3: После получения всех записей закройте форму загрузки и отобразите записи в DataGridView
На заметку:
DataGridView
привязан к моему DataSet.[Table]
.
Форма загрузки - это форма Windows, а не MessageBox
.
Я использую Visual Studio 2017 Community Edition.
Я планирую использовать эту реализацию для всех моих взаимодействий с базой данных, таких как обновление и т. Д.
Вопросы:
Код
Вот код для Form_Load
namespace MyApplication
{
public partial class frmTransactionListing : Form
{
public frmTransactionListing()
{
InitializeComponent();
}
frmload LoadingForm = new frmload();
private void frmTransactionListing_Load(object sender, EventArgs e)
{
bgwTransactionListing.RunWorkerAsync();
}
Вот мой код для BacgroundWorker_DoWork
:
private void bgwTransactionListing_DoWork(object sender, DoWorkEventArgs e)
{
try
{
bgwTransactionListing.ReportProgress(0, "Loading Records");
System.Threading.Thread.Sleep(100);
bgwTransactionListing.ReportProgress(100, "Completed");
}
catch (Exception ex)
{
MessageBox.Show("We have encountered an error and cannot proceed. Error: " + ex.Message);
}
}
Вот мой код для BacgroundWorker_ProgressChanged
:
private void bgwTransactionListing_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if(e.ProgressPercentage == 0)
{
LoadingForm.ShowDialog();
}
}
Вот мой код для BackgroundWorker_RunWorkerCompleted
. Здесь я пытаюсь закрыть форму загрузки:
private void bgwTransactionListing_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
dgTransactionList.Refresh();
}
Дополнительно Спасибо за вашу помощь.
ОБНОВЛЕНИЕ 1: я отключил форму загрузки и попытался поставить таблицу
Метод заполнения адаптера на RunWorkerCompleted
и DataGridView
теперь отображаются записи. Я думал, что метод Fill это процесс
получения записей из моей базы данных. Видимо, нет.
ОБНОВЛЕНИЕ 2: я обновил коды, которые у меня есть в настоящее время после того, как я подал заявку
предложения от @russelrillema @Jimi. Теперь я могу показать и закрыть
Загрузка с. Я также обновил свои проблемы.