在DataGridView上显示连续进度条

时间:2015-07-31 17:39:48

标签: vb.net datagridview

我有两种形式(Main.vb和Schedule.vb)。 Main有一个tooltripmenu和一个面板。何时"查看时间表"从toolstripmenu中选择,Schedule表单在Main表单面板中打开。所以它作为一个"子形式打开"。这非常有效。

Private Sub tsmiScheduleView_Click(sender As Object, e As EventArgs) Handles tsmiScheduleView.Click

Schedule.TopLevel = False
Schedule.Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right
Schedule.Size = New Size(pnlMain.Width, pnlMain.Height) 'anchors will be disrupted if form does not open to fit with main
Me.pnlMain.Controls.Add(Schedule)
Schedule.Show()

End Sub

问题发生在Schedule.vb中,有一个DataGridView通过TableAdapter填充。但是加载需要很长时间。所以我想在DataGridView加载时显示一个Continuous Progress Bar。

Private Sub Schedule_Load(sender As Object, e As EventArgs) Handles MyBase.Load

' Load main data into the Schedule DataGridView
Me.SchedulViewTable_TableAdapter.Fill(Me.DataSetSchedule.SchedulViewTable)

End Sub

我可以让进度条显示得足够简单,但是在加载DataGridView时它会冻结。

我尝试过使用线程,后台工作人员,将ProgressBar放在一个单独的表单中并从那里显示它,我甚至将我的ProgressBar想法用于使用图片框的动画gif。这些都不适合我。有人可以帮忙吗?

作为一个说明,我希望在我的程序中使用它。每当我遇到需要时间的事情时,我都想轻松地说:"好的,在Main.vb上显示Continuous Progress Bar,直到我完成了#34;

感谢。

2 个答案:

答案 0 :(得分:0)

Set the DataGridView DataSource to null before executing the Fill command. Then set the DataSource back to DataTable.

If you do that, how long does it take between the binding and the display (I would bet on 5 to 15 seconds)?

答案 1 :(得分:0)

似乎唯一要做的就是将更少的行加载到DataGridView中,这样就不需要进度条了。不是我想做的,但没有办法做我原本想要的。

我能够显示文字,“正在加载......”但没有动画。