第二个窗体调用第一个窗体的Timer.Start()问题

本文探讨了在使用C#进行Windows Forms应用程序开发过程中遇到的一个问题:当主窗体试图通过Timer控件定时从数据库更新DataGridView显示的数据时,无法正确实现更新。文章详细记录了作者排查问题的过程,包括尝试不同的数据源类型、控件替换等方法,并最终找到了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现功能,主窗体从数据库读取数据,点击主窗体上的添加按钮,弹出一个新的窗体,要在窗体关闭的时候,调用主窗体的Timer空间,使其Start(),继续从数据库获取最新一条数据。

今天做了一天,数据库都更新完了,但是主窗体DataGridView 上的数据就是不更新。

可能出现的问题: 一,我没有数据库,用的泛型作为数据源,泛型出问题了,2,DataGridView 出问题了,3,Timer 控件出问题了。

在网上搜索说控件没有 Refresh,但是仍然无结果。

然后开始调试:List<Order> olist=..... ;DataGridView.DataSource=olist; 最后一步绑定的时候,进入 Order 对象里面,死活不得出来,只有按F5;

问题考虑:为什么DataSource 最后一步的时候,还要多次进入Order 对象,并且运行N次,只有F5 才能终止

下班。。。

回家之后,用一台全新的电脑,重新建了一个最简单的程序,仍然无结果。然后将泛型换成DataSet 仍然无结果,然后将GridView 换成 TextBox 仍然无结果, 看来是Timer控件的问题了。

然后将2个窗体的要做的工作 弄到一个窗体里面去,成功了。。。为什么Timer控件 不能在2个窗体运行吗?奇怪。

最后把 第二个窗体的代码修改了之后,实现了。

Form1 fm=new Form1(); fm.timer1.start();

换成了 Form(Timer _timer) 接收 Form1传递的Timer ,然后 _timer.start();

想不通。。。

Timer是线程吗 ? 线程只能传参数吗 ?不能通过 Form1 fm=new Form1(); fm.timer1.start(); 运行吗 ?

但是不管哪个 方式,程序调试的时候 都没有问题,看不出来任何异常。

转载于:https://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154303.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值