zoukankan      html  css  js  c++  java
  • 非活动窗体的退出

    应用程序一段时间不进行操作自动退出[C#] 

     

    没有时间去详细说明了,纯贴代码

    public partial class MainFrm : Form, IMessageFilter
        {

    public MainFrm()
            {
                InitializeComponent();
                Application.Idle+=new EventHandler(Application_Idle);
            }

    private void MainFrm_Load(object sender, EventArgs e)
            {
                Application.AddMessageFilter(this);

    }

    private void MainFrm_FormClosing(object sender, FormClosedEventArgs e)
            {
                Application.RemoveMessageFilter(this);

    }

    private void Application_Idle(object sender, EventArgs e)
            {
                if (m_WaitMinute == 0)
                {
                    myTimer.Start();
                }
                else
                {
                    if (m_WaitMinute >= 6)
                        this.Close();
                }
            }

    public bool PreFilterMessage(ref Message m)
            {
                if(m_WaitMinute!=0)
                {
                    m_WaitMinute = 0;
                    this.myTimer.Enabled = false;
                    return true;
                }
                //switch(m.Msg)
                //{
                //    case 513:
                //        MessageBox.Show("鼠标左键不可用");
                //        return true;
                //    case 513:
                //        MessageBox.Show("鼠标右键不可用");
                //        return true;
                //}

                return false;
            }

    private int m_WaitMinute = 0;
            private void myTimer_Tick(object sender, EventArgs e)
            {
                if (m_WaitMinute < 60)
                {
                    myTimer.Enabled = true;
                    myTimer.Interval = 10000; //10秒
                    m_WaitMinute += 1;
                    this.Opacity = 1.0 - Convert.ToDouble(m_WaitMinute / 60.0);
                    //MessageBox.Show(this.Opacity.ToString(),m_WaitMinute.ToString());
                }
                else
                {
                    myTimer.Enabled = false;
                    //MessageBox.Show("时间到");
                }
            }

    测试代码的时候不要有消息框弹出,不要修改控件的值或者状态,这些都会造成事件的再次触发。郭振方。Application.Idle + timer 或者 Application.AddMessageFilter + timer 二者使用其一就可以了,放在这里以备参考

    原文链接:http://gguozhengfang.blog.163.com/blog/static/1444176020081050163871/

  • 相关阅读:
    前端基础进阶(四)-让你一分钟就看懂的作用域和作用域链
    前端基础进阶(三)-史上最详细的变量对象详解
    前端基础进阶(二)-知识点解析最精炼最详细
    前端基础进阶(一):内存空间详解-月薪5万
    知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行,真的
    学习web前端的免费12个学习网站,等你来撩
    一个老牌程序员推荐的JavaScript的书籍,看了真的不后悔!
    零基础的同学看过来,如何系统学习前端
    这是那些大佬程序员常用的学习java网站,这就是别人薪资上万的原因
    Debug outlook add-in (office.js) 小技巧
  • 原文地址:https://www.cnblogs.com/jinyuttt/p/2032403.html
Copyright © 2011-2022 走看看