通知用户 DataGridView 正在填充数据

3
我正在使用VB.Net编写一个程序来管理通过API发送的短信。它允许您在datagridview中查看消息并按日期、已发送/未发送等进行筛选...
为了加载消息,我执行了一个SQL语句并检索到一个DataTable,然后将其设置为我的DataGridView控件的DataSource。
问题是,根据所选的过滤器,用户可能会选择很多记录,并且数据源更新需要一些时间。我想通过提供进度条或某种标签来通知用户这个加载时间。
我以前在循环数据时使用过进度条,但这次是一次性全部加载。我考虑在用户单击加载数据时显示标签,然后在数据加载完成时隐藏它。但即使数据仍在加载,这也会立即发生。
也许DataGridView上有我可以使用的事件吗?类似于.DataSourceLoadStart和.DataSourceLoadFinished之类的东西。
我知道我只是编造这些事件...但希望这能更清楚地说明我的意思。
2个回答

3
你可以在点击“加载”时设置标签为可见,并尝试使用 "DataGridView.DataBindingComplete" 事件将其隐藏,该事件会在绑定完成后调用。

MSDN 链接 - DataBindingComplete


这个功能按照预期运行。我认为问题在于无法在单击加载按钮时使标签可见。目前它的流程是... 单击 > 显示加载标签 > 加载消息 > 数据绑定完成(再次隐藏消息)但是当数据正在加载时,标签不会显示。它会在 DataGridView 填充完毕后立即显示标签,然后立即隐藏它。尽管我的代码是这样的:<pre> lblLoading.visible = true LoadMessages() </pre> 所以它应该先显示标签,对吧... ??? - Banford
1
在显示标签的调用后添加Application.DoEvents(),这样它将优先显示标签,然后再去加载消息。 - Tanner
MSDN链接:DoEvents():http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.doevents.aspx - Tanner
在添加DoEvents()并使用DataBindingComplete()方法后,它完全按照我的要求工作。感谢您的帮助。 - Banford

0
有点跑题,但是……我想知道你是否可以将一个 AJAX 更新面板带有活动/加载图像附加到一个网格视图上?我不认为我曾经见过这样做,但这是一个很好的应用场景。

我以前使用过这种方法来实现类似的结果。但是这是为桌面应用程序而设计的,如果我没有表述清楚,对不起。 - Banford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接