苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3906|回复: 5

[其他] C#中计时器的问题

[复制链接]
发表于 2013-9-12 14:30:25 | 显示全部楼层 |阅读模式
我在Form1中添加一个计时器,Form1加载后几秒后打开Form2。我想让Form2关闭时再次激活Form1中的计时器,这个要怎么实现啊。就是类似与屏幕保护的程序。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-9-12 14:38:34 | 显示全部楼层
打开时停止,关闭时结束就行了, 这不用怎么处理了吧
 楼主| 发表于 2013-9-12 14:54:35 | 显示全部楼层
打开Form2时停止可以,但是Form2关闭时 计时器怎么启动呢
 楼主| 发表于 2013-9-12 15:38:32 | 显示全部楼层
站长苏飞 发表于 2013-9-12 14:38
打开时停止,关闭时结束就行了, 这不用怎么处理了吧

public partial class Form1 : Form
    {
        List<Image> imgs =new List<Image>();
        private static int i = 0;
        public delegate void Mydelegate();
        public event Mydelegate Myevent;
        public Form1()
        {
            InitializeComponent();
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
            Bitmap img1 = new Bitmap("E:\\picture\\1.jpg");
            Bitmap img2 = new Bitmap("E:\\picture\\2.jpg");
            Bitmap img3 = new Bitmap("E:\\picture\\3.jpg");
            Bitmap img4 = new Bitmap("E:\\picture\\4.jpg");

            imgs.Add(img1);
            imgs.Add(img2);
            imgs.Add(img3);
            imgs.Add(img4);
            pictureBox1.Image = imgs;

            System.Timers.Timer picture = new System.Timers.Timer();
            picture.Elapsed += new ElapsedEventHandler(picture_Elapsed);
            picture.Interval = 1000 * 5;
            picture.AutoReset = true;
            picture.Enabled = true;

        }
        private void picture_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (i >= 3)
            {
                i = 0;
                pictureBox1.Image = imgs;
            }
            else
            {
                i++;
                pictureBox1.Image = imgs;
            }
        }

        private void Mouse_Down(object sender, MouseEventArgs e)
        {
            i = 0;
            if (Myevent != null)
            {
                Myevent();
            }
            this.Close();
        }
    }

public partial class Form2 : Form
    {
        System.Timers.Timer t = new System.Timers.Timer();
        Form1 f = new Form1();

        public Form2()
        {
            InitializeComponent();
            
            f.Myevent +=new Form1.Mydelegate(f_Myevent);
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            t.Interval = 1000 * 5;
            t.Enabled = true;
            t.AutoReset = true;
            t.Elapsed += new ElapsedEventHandler(t_Elapsed);

        }
        private void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            t.Stop();
            f.ShowDialog();
        }

        private void change(object sender, MouseEventArgs e)
        {
            t.Stop();
            t.Interval = 1000 * 5;
            t.Start();
        }
        void f_Myevent()
        {
            this.t.Interval = 1000 * 5;
            this.t.Start();
        }

    }

站长 这两段代码form1中的计时器运行几次后时间间隔明显变短了,而且忽快忽慢的。
 楼主| 发表于 2013-9-12 16:11:55 | 显示全部楼层
小弟才疏学浅了,现在解决了。用委托。谢谢站长,麻烦你了!
发表于 2013-9-16 11:51:27 | 显示全部楼层
偵憛尐芓シ 发表于 2013-9-12 16:11
小弟才疏学浅了,现在解决了。用委托。谢谢站长,麻烦你了!

我都没看到,提醒下,下次回复谁就单击了下面的回复。这样才能及时收到通知
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-28 10:40

© 2014-2021

快速回复 返回顶部 返回列表