2011-11-04 19 views
0

我有一个windows窗体中的gridview。当大量数据从数据库加载到gridview时,我的应用程序会挂起,直到所有数据都加载到gridview。有什么办法可以解决这个问题吗?当数据加载到gridview时,我也想显示一个gif图像[loading.gif]或进度条,以显示用户数据正在加载到gridview。但图像和进度条也挂起。当大量的数据加载到gridview时,应用程序被吊死

我也有一个工具提示,我想在屏幕中心显示该工具提示。我的代码如下,但它没有将该工具提示放置在中心。

Dim x As Integer = TryCastInteger(Screen.PrimaryScreen.WorkingArea.Width/2) 
    Dim y As Integer = TryCastInteger(Screen.PrimaryScreen.WorkingArea.Height /2) 
    ToolTip1.Show("It will take few seconds to display the data.", KryptonPanel1, x, y) 

回答

2

对于你的问题的第一部分:创建一个线程BackgroundWorker加载从数据库中的数据并填充上主线程gridview的这些数据,而无需冻结您的UI。

+1

并使用ProgressChanged上BackgroundWorker的更新映像和进度。 –

+0

@CodeBuzz:检查我编辑的问题。 – nightfire001

+0

@Miika L.:检查我编辑的问题。 – nightfire001

0

你正在UI线程中加载数据 - 这就是为什么它冻结你的用户界面,直到它完成。

看看异步数据绑定。

下面是一些链接:

Asynchronous data loading and data binding with Windows Forms

StackOverflow - Asynchronously populate datagridview in Windows Forms application

+0

检查我编辑的问题。 – nightfire001

+0

在我看来,你并没有以正确的方式使用后台工作。您应该在DoWork方法中获取数据(不更新UI),然后将结果传递给WorkCompleted方法,并在那里更新UI – Slav

相关问题