0

私はデータグリッドビューにデータを入力しています

MyDataGridView.DataSource = MyList;

MyList は List < MyClass > です。ここで、datagridview の作成中にプログレスバーを塗りつぶしたいと考えています。MyProgessBar.Maximum = MyList.Count を実行できますが、行が描画されるたびに MyProgressBar の値を設定するにはどうすればよいですか?

4

1 に答える 1

0

これが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;
    }
于 2013-02-03T14:07:19.757 に答える