私はデータグリッドビューにデータを入力しています
MyDataGridView.DataSource = MyList;
MyList は List < MyClass > です。ここで、datagridview の作成中にプログレスバーを塗りつぶしたいと考えています。MyProgessBar.Maximum = MyList.Count を実行できますが、行が描画されるたびに MyProgressBar の値を設定するにはどうすればよいですか?
これがbackgroundworkerによる解決策です...他に何も見つかりませんでしたが、これは私がしなければならないことには有効です
private void PopulateDataGridView()
{
MyProgressBar.Value = 0;
MyProgressBar.Maximum = MyList.Count;
MyBackGroundWorker.RunWorkerAsync();
MyDataGridView.DataSource = MyList;
}
その後
private void MyBackGroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
MyBackGroundWorker.ReportProgress(MyDataGridView.Rows.Count);
if (MyDataGridView.Rows.Count == MyProgressBar.Maximum)
{
break;
}
System.Threading.Thread.Sleep(100);
}
}
private void MyBackGroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
MyProgressBar.Value = MyDataGridView.Rows.Count;
}