Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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
底层MySQL数据库内容更改时,C#DataGridView控件未更新_C#_Mysql_Winforms_Datagridview - Fatal编程技术网

底层MySQL数据库内容更改时,C#DataGridView控件未更新

底层MySQL数据库内容更改时,C#DataGridView控件未更新,c#,mysql,winforms,datagridview,C#,Mysql,Winforms,Datagridview,我在基于Windows窗体的C#桌面应用程序中使用数据绑定datagridview(sbDataGridView)控件。 从数据库加载数据工作正常,所有值都正确显示。 但是,当通过手动添加一些行来模拟数据库中数据的更改时,datagridview控件不会自动反映此更改。有没有办法让控件知道更改并自动更新自身? 我已经添加了一些执行以下任务的时间,但没有一个有效 private void RefreshTimer_Tick(object sender, EventArgs e) {

我在基于Windows窗体的C#桌面应用程序中使用数据绑定datagridview(
sbDataGridView
)控件。 从数据库加载数据工作正常,所有值都正确显示。 但是,当通过手动添加一些行来模拟数据库中数据的更改时,datagridview控件不会自动反映此更改。有没有办法让控件知道更改并自动更新自身? 我已经添加了一些执行以下任务的时间,但没有一个有效

    private void RefreshTimer_Tick(object sender, EventArgs e)
    {

        // tBindingSource.ResetBindings(false);
        // sBindingSource.ResetBindings(false);
        // sbBindingSource.ResetBindings(false);
        sbDataGridView.DataSource = null;
        sbDataGridView.DataSource = sbBindingSource;

        //MessageBox.Show("Tick");
        //sbBindingSource.ResetBindings(false);
        //tBindingSource.ResetBindings(false);
        //sBindingSource.ResetBindings(false);

        //sbDataGridView.Refresh();
        //sbDataGridView.Invalidate();

        //sDataSet.Reset();
        //tTableAdapter.Fill(sDataSet.t);
        //sTableAdapter.Fill(sDataSet.s);
        //sbTableAdapter.Fill(sDataSet.sb);
        //sbDataGridView.Invalidate();
    }
Form\u Load
方法中,我有一行
RefreshTimer.Start()
。 如果取消注释MessageBox行,MessageBox将每秒显示一次。计时器当前设置为每秒一次

(我已经尝试了以上所有和一些不同的顺序…) 你知道这里怎么了吗

我已经尝试了来自的“肮脏”解决方案,但也不起作用

致以最良好的祝愿,
Tom

您需要显示您发布的代码中的方法签名。。还有,您是如何触发更新以再次调用数据库的。。这也是一个windows应用程序,它应该如何知道数据库的任何更改。。这种肮脏的方式应该管用。。看起来你没有做任何接近的事情你是对的。我没有在函数调用运行时编写。我使用的是计时器,方法签名是:
private void refreshttimer\u Tick(object sender,EventArgs e)
。关于脏方法,我还将调用包括在timer方法中,并且DGV没有更新。只有在关闭并重新启动应用程序时,新数据才可用。此外,如果数据网格位于容器控件(如面板、组框)中,请确保刷新该控件。@TomS您需要编辑问题并发布相关代码。。我猜你是在错误地使用计时器事件。。您需要显示与您的问题相关的所有相关代码。。另外,就计时器而言,轮询发生的间隔是多少。。?就我个人而言,我会使用
刷新
按钮来测试这段代码,看看它是否有效。然后将其移动到计时器关闭Visual Studio,重新启动PC并重新启动Visual Studio,“脏”解决方案也有效。现在调试起来更容易了。谢谢你的帮助!