[已解决问题] C# Winfrom 如何判断鼠标在窗体上是否移动过?
提问时间: 2008-06-21 13:57
悬赏分:50 浏览:390 次
如题,是这样的。
我在做触摸屏。为了防止客户点了触摸屏没按返回就离开。我想让它在某一页面上只停留一分钟。一分钟过户就回到主页面。
我是这样做的,拖一个timer控件,然后声明一个全局的int变量。
interval属性设置成1000。
代码
private void timer2_Tick(object sender, EventArgs e)
        {
            begin++;
            if (begin == 60)
            {
                //Application.Exit();
                this.Close();
                //MainForm main = new MainForm();
                //main.Show();
                Form3 f = new Form3();
                f.Show();
            }
        }
把前一个页面关闭了,但第二个页面没show出来怎么回事?
说白了我就是等时间到了60秒它就自动它关了。
然后再show一下主窗体。
能实现这个功能就不用看下面了。

群里的朋友说,把当前页面的属性设为false也就是this.Visible = false;
这样一来两个页面时还好使等页面多了就不行了。

后来又想,先判断鼠标是不是在窗体上?如果不在,时间就停止并且不去执行timer的事件。
如果鼠标在窗体上看它是移动还是静止如果是移动就不去管它。
如果鼠标是静止就让它执行timer事件。
或许是我思路有问题,有好主意也可以提一下。
高手赐教
最佳答案
先纠正楼主几个问题再回答。 1、Timer控件是个计时器。设计思路是:起初Timer控件的初始值就设为0,一旦鼠标移动就停止计时;如果在时间未到一分钟时就移动了,那么Timer控件的初始值就重新设为0,而如果计时已到一分钟,那么就打开新窗体,关闭现有窗体。 2、在WinForm中不叫页面,而叫做窗体。(是个小问题,不过容易混淆视听) 回答: 1、为何show不出来窗体,请你将代码调换,先show窗体在关闭本窗体,建议你的窗体采用MDI窗体(即父子窗体),主窗体为父,这样时间到了关闭所有子窗体就可以了,而主窗体不用也不能被关闭。 2、关于隐藏窗体建议不要使用,该关闭还需关闭,必须要释放资源,要不然只是看不见似乎并不是很好,当然你也可以根据自己的需求,在不会浪费资源的情况下,来看看是否能使用隐藏窗体的方式。 3、Timer控件有两个方法,一个是Timer1.start();一个是Timer1.stop();配合前面讲的设计思路,用在鼠标移动事件中可以控制计时的开始和停止。
2008/6/21 14:18:17 回答者:刚刚


提问者对于答案的评价:嗯,谢了。 同样谢谢所有回答的热心人
其它回答(3)

3个月前   回答者:林间曦阳 - 小虾三级
第一个主窗体不能Close,否则你的应用就退出了,你应用退出了,新的窗体当然就显示不出来了。所以如果你需要多次new 主窗体,你需要判断,对于第一个主窗体不能close而是hide,参考下面代码 static int m_ShowMainFormTimes = 0; private void button1_Click(object sender, EventArgs e) { if (m_ShowMainFormTimes++ == 0) { this.Hide(); } else { this.Close(); } FormMain frm = new FormMain(); frm.Show(); }
3个月前   回答者:eaglet - 老鸟四级
如果采用最简单的设计,我会让主窗体隐藏而不是关闭。并且使用Singleton Pattern或其它的方式,使所有子窗体都可以访问到主窗体。 然后,子窗体退出前,先将主窗体显示出来。如下: private void button1_click(object sender, EventArgs e) { MainForm.Instance.Visible = true; MainForm.Instance.Activate(); // 确保主窗体显示在最前面。 this.Close(); }
3个月前   回答者:Colin Han - 老鸟四级
评论
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接