首页 > 解决方案 > 如何从另一个类刷新活动 WinForm 中的 DataGridView?

问题描述

我有一个带有 DataGridView 的 Winform,其中包含从 API 调用到服务器数据库的一些表值。我想在轮询服务器后刷新表,所以我使用了一个计时器来定期轮询服务器。我不确定如何让活动的 WinForm 更新或替换它,因为我有一个从“程序”类运行的 WinForm 和另一个从我的“PollTimers”类运行的 WinForm,其中计时器配置和运行发生。这是我的方法,“UpdateTable”来自我的“Form1”类,“OnPollEvent”来自“PollTimers”。

        public void UpdateTable(string id, string status, string ticketStatus)
    {

        foreach(DataGridViewRow row in dataGridView1.Rows)
        {
            if ((string)row.Cells[2].Value == id)
            {
                row.Cells[3].Value = status;
                row.Cells[4].Value = ticketStatus;
            }
        }
        dataGridView1.Update();
        dataGridView1.Refresh();

    }


        private async void OnPollEvent(Object source, ElapsedEventArgs e)
    {
        Form1 f = (Form1)Application.OpenForms["Form1"];
        Console.WriteLine("updating...");
        foreach (Server server in Polls)
        {
            string json = await call.CallAsync(server.id);
            dynamic convert = JsonConvert.DeserializeObject<RootObject>(json);
            string ticketStatus = await call.TicketStatusAsync(server.id);
            if (convert.status != "online")
            {
                Polls.Remove(server);
                RePolls.Add(server, 0);

            }
            f.UpdateTable(server.id, convert.status, ticketStatus);

        }
        Console.WriteLine("updated.");
    }

标签: c#winforms

解决方案


推荐阅读