触发事件 WPF 的计时器

2023-12-04

我这里有一个项目,它默认设置由 MouseEnter 事件发生操作。我的意思是,打开一个窗口、关闭、返回等等,仅通过 MouseEnter 事件发生。

我被要求在 3 秒后触发事件。这意味着用户将鼠标放在控件上,仅在 3 秒后,窗口中的所有控件都必须发生该事件。

所以,我想到了一个全局计时器或类似的东西,它会返回 false,直到计时器达到 3...我认为就是这样...

天啊,有人知道我怎样才能做这样的事情吗?

Thanks!!


您可以定义一个类来公开DelayedExecute方法,接收要执行的操作并根据延迟执行的需要创建计时器。它看起来像这样:

public static class DelayedExecutionService
{
    // We keep a static list of timers because if we only declare the timers
    // in the scope of the method, they might be garbage collected prematurely.
    private static IList<DispatcherTimer> timers = new List<DispatcherTimer>();

    public static void DelayedExecute(Action action, int delay = 3)
    {
        var dispatcherTimer = new System.Windows.Threading.DispatcherTimer();

        // Add the timer to the list to avoid it being garbage collected
        // after we exit the scope of the method.
        timers.Add(dispatcherTimer);

        EventHandler handler = null;
        handler = (sender, e) =>
        {
            // Stop the timer so it won't keep executing every X seconds
            // and also avoid keeping the handler in memory.
            dispatcherTimer.Tick -= handler;
            dispatcherTimer.Stop();

            // The timer is no longer used and shouldn't be kept in memory.
            timers.Remove(dispatcherTimer);

            // Perform the action.
            action();
        };

        dispatcherTimer.Tick += handler;
        dispatcherTimer.Interval = TimeSpan.FromSeconds(delay);
        dispatcherTimer.Start();
    }
}

然后你可以这样调用它:

DelayedExecutionService.DelayedExecute(() => MessageBox.Show("Hello!"));

or

DelayedExecutionService.DelayedExecute(() => 
{
    DoSomething();
    DoSomethingElse();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

触发事件 WPF 的计时器 的相关文章

随机推荐

  • 使用 jQuery 从子域获取 JSON

    I have user1 mydomain com and user2 mydomain com域 我用api mydomain com通过 AJAX JSON 处理我的 Web 应用程序 所以 我想发出一个 POST 请求user1 my
  • 拨打号码时启动我的应用程序

    我想在拨打新号码或联系人号码时将我的应用程序显示为一个选项 我已关注这个话题 我有一个具有单一活动的应用程序 这是清单文件
  • 如何在 MySQL 中搜索 Soundex() 子字符串?

    我的 Joomla 有问题 3 集成搜索引擎 该引擎的索引器在索引内容时创建所谓的 soundex values 例如 测试对象 测试对象1 测试对象2239923 文本对象 它们都具有相同的 soundex 值 T23123 现在我的问题
  • 使用 C# 更改文件扩展名

    我有很多文件类型 pdf tiff jpeg bmp ETC 我的问题是如何更改文件扩展名 我试过这个 my file c my documents my images cars a jpg string extension Path Ge
  • PHP 脚本(嵌入式或其他形式)的安全性

    我对嵌入 PHP 代码的 HTML 网页 以 webpage php 形式存在于服务器上的网页 或可能被 HTML 页面引用的 PHP 脚本 即 PHP 脚本实际上不是网页的一部分 以 something php 形式存在于服务器上 并由
  • 使用 crontab 运行 PHP 脚本

    我知道 SO 是针对问题的 但无论我查了多少教程 我都无法得到我的crontab工作 我正在建立一个网站 该网站将依赖于crontab每天晚上重置我的数据库中的特定设置 这是我的crontab file Edit this file to
  • 如何在结构体字段中表示不透明类型

    我正在使用 genawater 箱来实现生成器函数 单线程 多任务 我有这段代码来创建一个新线程 并向其传递一个生成器 但我正在努力 找到如何表示impl Future输入那个gen 返回 use genawaiter rc gen Gen
  • getView 中的自定义 ArrayAdapter setBackground

    我正在开发一个 ListActivity 它将显示一堆数字 权重 我想更改 ListView 中特定行的背景 为此 我创建了 ArrayAdapter 类的自定义实现 并重写了 getView 方法 该适配器接受数字列表 并将数字 20 的
  • Firebase:对大型数据集的查询

    我正在使用 Firebase 来存储用户个人资料 我尝试在每个用户配置文件中放入最少量的数据 遵循有关结构化数据的文档中建议的良好实践 但由于我有超过 220K 个用户配置文件 因此在以 JSON 格式下载所有用户配置文件时 它仍然代表 1
  • Python - 在图中寻找模式

    该图是由以下生成的gnuplot脚本 这estimated csv文件可以在此链接中找到 https drive google com open id 0B2Iv8dfU4fTUaGRWMm9jWnBUbzg GNU Plot set st
  • 检查 Bash 数组是否包含值

    在 Bash 中 测试数组是否包含某个值的最简单方法是什么 这种方法的优点是不需要循环所有元素 至少不需要显式循环 但是由于array to string internal in array c仍然循环遍历数组元素并将它们连接成一个字符串
  • 使用带有管道输入的 gdb 而不创建文件

    我有一个接受管道输入的程序 bash gt echo something program seomthingelse 如何将此输入重定向到 gdb 而不创建新文件 如何将此输入重定向到 gdb 而不创建新文件 您可以创建一个命名管道 不确定
  • Spring中将变量传递给@Qualifier注解

    Spring中是否可以将变量传递给 Qualifier注解 例如 Autowried Qualifier datasource jobParameters datasource number private DataSource ds 我有
  • ios8 的 Parse 推送通知没有声音

    我在向 iOS8 设备推送通知时遇到问题 一切正常 但推送没有响铃 只出现在屏幕上 我通过仪表板发送正常推送 默认情况下启用声音 我在iPhone4 iOS 7 1 2 iPhone5 iOS 7 0 4 上测试 工作正常 但在iOS 8的
  • 将列表元素作为参数传递给 mixin

    以下代码有效 除非我尝试通过 gradient to include background image mixin compositeFill size 100px gradient top 000000 0 FFFFFF 100 isTo
  • Cython pyd 文件不通过 python 导入

    我正在用 python 编写一个程序来模拟粒子的反应 目的是向用户传授粒子反应的知识 由于 python 执行必要的处理速度太慢 我转向 Cython 来提高速度 它很有效 我可以编译我的 pyx文件到一个 pyd可以通过简单的命令从 py
  • 当数据包含换行符时 Text::CSV 解析

    我有一个解析 csv 文件的代码 并且数据还包含换行符 但是 Text CSV 在数据中遇到 n 时会中断 这是解析代码 use Data Dumper use Text CSV my csv Text CSV gt new binary
  • 使用 NSDateFormatter 进行日期格式化的问题

    我有一个日期字符串 我想将其转换为另一种格式 原始日期字符串示例是 2013 06 04 02 19 21 0000 我想将其转换为 6 月 4 日 星期三 NSString date string 2013 06 04 02 19 21
  • Java中如何防止ArrayList中的元素被删除?

    我想要一个ArrayList 并限制元素脱绒 我该怎么做 创建一个包装器List不允许删除的接口 只允许删除所需的方法 class MyArrayList
  • 触发事件 WPF 的计时器

    我这里有一个项目 它默认设置由 MouseEnter 事件发生操作 我的意思是 打开一个窗口 关闭 返回等等 仅通过 MouseEnter 事件发生 我被要求在 3 秒后触发事件 这意味着用户将鼠标放在控件上 仅在 3 秒后 窗口中的所有控