Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新计数器不更新我的DataGridView_C#_Datagridview_Visual Studio 2015_Counter - Fatal编程技术网

C# 更新计数器不更新我的DataGridView

C# 更新计数器不更新我的DataGridView,c#,datagridview,visual-studio-2015,counter,C#,Datagridview,Visual Studio 2015,Counter,我正在Visual Studio 2015中创建Windows窗体应用程序。我有它的沟通和分享与我们的SQL Server完美的每一个功能,但一个。我想在表单上放置一个“live”计数器,它每3秒(或更多)更新一个值。计数器的工作将是跟踪从仓库运出的库存(只需担心从SQL Server获取该信息,SQL Server已经具备该功能,在此之前没有任何功能),并显示该信息。不需要花哨,只要准确 public void InitializeTimer() { var timer

我正在Visual Studio 2015中创建Windows窗体应用程序。我有它的沟通和分享与我们的SQL Server完美的每一个功能,但一个。我想在表单上放置一个“live”计数器,它每3秒(或更多)更新一个值。计数器的工作将是跟踪从仓库运出的库存(只需担心从SQL Server获取该信息,SQL Server已经具备该功能,在此之前没有任何功能),并显示该信息。不需要花哨,只要准确

public void InitializeTimer()
    {
        var timer = new System.Timers.Timer();
        timer.Interval = 3;
        timer.Start();
        timer.Elapsed += keep_track_of_inventory_being_shipped;
    }

    private void keep_track_of_inventory_being_shipped(object sender, EventArgs e)
    {
        RefreshMyForm();
    }

    private void RefreshMyForm()
    {
        this.TableAdapter.Fill(this.DataSet.CMS);
    }
}
我以前问过这个问题,我本以为我答对了,但我注意到我错了。很遗憾我回来了。。。我试图通过对SO和其他来源的研究来修改代码,以使其正常工作,从而使此代码看起来与我过去发布的URL中的代码不同。没有骰子

附加信息:当程序第一次加载时,“this.TableAdapter.Fill(this.DataSet.CMS);”每隔几秒钟(或几分钟,随便什么。在计数器工作后,我会担心这个问题)。它确实在程序启动时提供了正确的计数,但我似乎根本无法让它刷新。我知道最后两种方法可能有点过头了,但我决定还是保持原样,问问别人。我从低间隔开始只是为了检查它是否在更新。它不是:/I我不明白为什么没有抛出错误,或者为什么“this.TableAdapter.Fill(this.DataSet.CMS);”可以在开始时从数据库正确更新计数,但不能以这种方式刷新?如果不是要求太多,我更愿意理解这一点以及修复建议,而不仅仅是修复


tchelidze发布的最初解决方案是我之前使用的解决方案,但我确信责任在于我没有正确实施他的建议。我很感激我能得到的任何帮助,很长一段时间了,我喜欢这个网站。谢谢大家。

这是因为您需要调用
计时器。停止()
当您进入
RefreshMyForm
时,然后在fill方法完成后,调用
计时器。开始()
并且在该方法之外无法访问时间
public void InitializeTimer()
您应该在表单上放置一个计时器,这样做您应该从
timer1\u Tick事件调用
RefreshMyForm
,这是因为您需要调用计时器。当进入
RefreshMyForm
时,停止(),然后在fill方法完成后,调用timer.Start()此外,此方法之外无法访问时间
public void InitializeTimer()
您应该在表单上放置一个计时器,这样做您应该从
timer1\u Tick事件调用
RefreshMyForm
。此外,对于测试,您应该将其设置为3000(记住这些是毫秒,你不希望它每秒刷新333次)--斯坦:嘿,谢谢你,伙计,我想我对这个问题缺乏耐心是显而易见的。--MethodMan:一个……的儿子,来自强类型语言,仍然习惯于工具箱和属性窗口等。非常感谢MethodMan,我真的很感激。@MethodMan我想把你的答案标记为正确/解决了,但既然它是我的答案“我想我不能在评论中这样说吗?我只是想给你一点荣誉,因为我很感谢你的帮助。@耸耸肩,我已经对它进行了更新,使它成为一个答案,所以如果你愿意,请随时接受。”。。