这个功能如何实现?

foxd 2017-02-13 10:52:35
在Winform环境下,界面上若有一个button,它有MouseHover事件,当鼠标放在该button上面时等待1秒钟若仍不离开则用MessageBox.show(“”在上面“”); 若还不到1秒钟鼠标就离开的话就相当于什么也没发生。这样的功能如何实现呢?可不可以用类似TimeSpan(0, 0, 0, 0, 1000) 这样的语句来实现?谢谢!
...全文
312 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbjiabcd 2017-02-17
  • 打赏
  • 举报
回复
TimeSpan指的是一个时间间隔,一般在计算日期的时候才会用到,这里用不到
bbjiabcd 2017-02-17
  • 打赏
  • 举报
回复
MouseHover的时间是SystemInformation.MouseHoverTime(单位:毫秒),这个值是只读的,根据系统设置指定的,无法从程序中直接修改(我这里是400)。如果需要实现1秒后弹出消息,建议用MouseEnter和MouseLeave配合Timer的方式:

        private void button1_MouseEnter(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        private void button1_MouseLeave(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            MessageBox.Show("在上面");
            timer1.Enabled = false;
        }
圣殿骑士18 2017-02-16
  • 打赏
  • 举报
回复
用timer要依赖额外的timer对象,我是用线程实现类似功能:
/// <summary>
        /// 等待一段时间后执行一个任务
        /// </summary>
        /// <param name="fun"></param>
        public static void WaitFor(int waitSeconds, Action fun)
        {
            Thread thread = new Thread(() =>
            {
                Thread.Sleep(waitSeconds * 1000);
                fun();
            });
            thread.Start();
        }
调用:
ThreadHelper.WaitFor(3, () => 
                {
                    fmEvent.pnGreenSuccess.BackColor = SystemColors.Control;
                });
socg 2017-02-15
  • 打赏
  • 举报
回复
用System.Windows.Forms.Timer, 在MouseHover中计时,在Timer中判断超时,并弹出对话框
xdashewan 2017-02-13
  • 打赏
  • 举报
回复
实现方法有很多,我觉得简单的做法可以用thread.timer,MouseHover触发的时候设定1秒延时触发的事件,移开了就把thread.timer归零
baidu_34633664 2017-02-13
  • 打赏
  • 举报
回复
没理解你的意思,大概是这个吗? 超过5秒来消息 Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); messagebox.show("aaaaaaaaaaaaaaaa"); stopwatch.Stop(); TimeSpan Span = new TimeSpan(); Span = stopwatch.Elapsed; if (Span.TotalSeconds >= 5) { MessageBox.Show(stopwatch.Elapsed.ToString()); } //Elapsed、ElapsedMilliseconds 或 ElapsedTicks

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧