2

我正在尝试一些非常基本的东西。

我的 windows 窗体上有 3 个标签,我想从数据库中的 3 个单独的查询中填充它们,但也为了向用户显示正在发生的事情,我想显示每个标签,因为数据可从相应的查询中获得.

为此,我可以使用:

Form.ActiveForm.Refresh();

但是,如果用户单击桌面上的任何其他窗口,该命令将失败,并出现“对象未设置”错误。

有什么方法可以刷新表单上的标签,即使表单窗口不是活动窗口?

// Breach within next hour
DataTable tbBreach = (get info from database)
tbBreach.DefaultView.Sort = "Assignee ASC";
dgBreach.DataSource = tbBreach;
lbBreach2.Text = tbBreach.Rows.Count.ToString();
Form.ActiveForm.Refresh();  //Would like to update this form field now, and show it on the form

// Breach within next 24 hour
DataTable tbBreach24 = (get info from database)
tbBreach24.DefaultView.Sort = "Assignee ASC";
dgBreach24.DataSource = tbBreach24;
lbBreach24.Text = tbBreach24.Rows.Count.ToString();
Form.ActiveForm.Refresh();

谢谢,

标记

4

1 回答 1

4

标签将在详细说明结束时自动刷新。

您可能想强制刷新以在详细说明中间更新标签,您可以简单地使用,this.Refresh()因为我怀疑该方法位于表单类中。

但是,当您进行长时间的阐述并且需要保持 UI 更新和反应性(即不冻结)时,建议的方法是避免在 UI 线程上进行阐述,而是使用BackGroundWorker.

是 BackGroundWorker 使用的一个工作示例。

于 2013-01-23T10:28:03.153 回答