我目前正在C#中开展一个非常简单的项目。

我有一个状态框,两个按钮和一个dataGridView。

当Form加载时,dataGridView被正确填充。

我想要做的是每隔45秒更新一次该表,以反映数据库中的任何更改。

我正在寻找有关实现此目标的技术的建议。我一直在寻找明确的信息,但似乎有点缺乏。

有帮助吗?

解决方案

  1. Timer 控件添加到表单中。 (它在组件类别中)
  2. Interval 属性设置为 45000 (该值代表毫秒)
  3. 将定时器的 Enabled 属性设置为表单设计器中的 True ,或代码中的某处。
  4. 为计时器的 Tick 事件添加处理程序(您可以通过双击计时器来获取此事件)
  5. Tick 处理程序中,更新 dataGridView
  6. 您的处理程序将如下所示:

    private void timer1_Tick(object sender, EventArgs e)
    {
        // Update DataGridView
    }
    

    如果由于某种原因需要暂停更新,可以调用 timer1.Stop()来停止计时器的运行,并使用 timer1.Start()来再次启动它。

其他提示

与其他人建议的一样,使用Timer来重新查询数据库。我唯一想补充的是,当您重新查询数据库时,不要只将DataGridView的数据源设置为新表。而是将其与现有表合并。这样做的原因是,如果用户位于网格中间,例如查看特定行,如果将DataSource重置为新表,则整个网格将刷新,并且它们将丢失其位置。讨厌地狱!如果您合并,它将对用户无缝。

DataTable.Merge

使用Merge方法时要注意的一点是表需要有一个主键。仔细检查以确保DataTable本身具有主键。并不总是将其从数据库中拉回来。您可能需要执行以下操作:

table.PrimaryKey = new DataColumn[] {table.Columns["ID"]};

使用计时器控件,然后以您需要的特定增量执行更新。

您可以创建计时器每45秒触发一次,并从事件处理程序更新UI。

你是说我应该在Timer事件处理程序中再次绑定datagridview?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top