一.背景
在FLEX中使用Label组件,在触发双击的同时,必然会触发一次单击事件,这样造成的结果是客户体验性不好,所以决定想办法改进。
二.解决办法
1. 在单击事件中,进行单双击类型的判断,在双击事件中,继续处理双击事件
2. 在组件初始化中,加入如下代码
//此延迟时间必须大于双击判断时间,否则执行双击事件时,还是要触发单击事件
Var clickDelayTimer:Timer = new Timer(1000);
clickDelayTimer.addEventListener(TimerEvent.TIMER,delayTime);
3. 单双击类型判断的代码
var time2:Number = new
Date().getTime();//第二次点击的时间
var cha:Number =
time2-firsttime;//firsttime为第一次点击的时间,起始为0
if(cha<500){//2次点击时间小于500毫秒,则认为为双击
isDoubleClick = true;
CursorManager.removeBusyCursor();
var
event2:MouseEvent =
new
MouseEvent(MouseEvent.DOUBLE_CLICK,false,false);
this.dispatchEvent(event2);//触发本组件的双击事件
}else{//为单击事件
firsttime = time2;//当前时间作为第一次点击的时间
CursorManager.setBusyCursor();
clickDelayTimer.start();//启动timer,执行单击事件的逻辑
}
三.总结
由以上解决问题的过程中可以看到,timer组件的延迟执行,是解决问题的核心点,正是由于其这个机制,使得此问题得以顺利解决
四.Timer组件的介绍
目前实际应用中,用到的地方
A.
当前台程序需要延迟一段时间
B.
代替大数据量的For循环,可以提高页面的客户体验
同时,灵活运用此组件,可以解决很多其他问题。此组件若使用不当,会造成内存泄露,因此使用时需注意,不再需要此
timer实例时,一定将其关闭。(另附内存管理文章一篇,见附件)
分享到:
相关推荐
在C# WinForm开发中,用户界面交互是一个关键部分,其中单击(Click)和双击(DoubleClick)事件是常见的用户输入响应。然而,标题提到的一个常见问题是:在同一个控件上,C# WinForm不支持同时处理单击和双击事件。...
然而,在处理用户输入事件时,尤其是在设计具有单击和双击功能的界面时,MFC库中存在一些固有缺陷,可能导致用户体验下降。本篇文章将深入探讨这些问题,并提供解决方案,帮助你优化你的MFC应用程序。 首先,让我们...
本示例将详细讲解如何使用Timer组件来实现一个窗体左右飘动的效果。Timer组件是.NET Framework中用于定时触发事件的一个工具,非常适合于执行周期性的任务。 首先,我们需要在窗体中添加一个Timer组件。在Visual ...
在C# Winform应用程序中,实现鼠标坐标的动态显示,我们可以利用Timer控件来定期获取鼠标的位置信息,并将其更新到界面上。Timer插件在Windows Forms应用程序中是一种非常实用的工具,它可以在指定的时间间隔内触发...
下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响的示例代码: ```java public class MyMouseListener extends java.awt.event.MouseAdapter { private static boolean flag = false; // 用来...
__interrupt void Timer1_int() { T1STAT &=~0x20; if(SW1 !=0 && Num !=0) { count++; } } void Scan() { if(SW1==0) { delay(100); if(SW1==0) { while(SW1==0); count=0; Num++; if(Num>2) { ...
这个方法通过`Timer`组件区分单击和双击事件,确保了用户界面的响应符合预期。在`testDataGridViewClick`项目文件中,可能包含了实现这个功能的完整代码示例,你可以根据自己的需求进行调整和学习。 总的来说,通过...
本文将详细讲解如何使用Timer组件来实现倒计时,并结合DateAndTime类的DateDiff方法来精确计算剩余时间。首先,让我们深入理解这两个关键知识点。 1. Timer组件: C#中的System.Windows.Forms.Timer或System....
代码实现中使用的宏定义,例如KEY2SING和KEY2DOUB,分别代表单击和双击两种不同的按键类型。这些宏定义与KEY2FLAG和KEY2TYPE共同工作,用于区分和处理不同的按键状态。 最后,代码中也提到了移植性问题。由于MSP430...
在Java世界中,任务调度是十分重要的,Spring框架...希望这个简要的介绍能帮助你理解Spring中如何使用Quartz和Timer来实现定时任务。在实际开发中,根据项目的规模、复杂性和并发需求来评估选择哪种方法是最合适的。
最强大的定时器接口来自POSIX时钟系列,其创建、初始化以及删除一个定时器的行动被分为三个不同的函数:timer_create()(创建定时器)、timer_settime()(初始化...本代码基于posix timer,实现自己的定时器,简单易用。
本例子重点介绍了如何利用`System.Timers.Timer`组件来实现这样的多线程操作,特别是针对网段ping功能的实现。`System.Timers.Timer`是一个异步定时器,它在单独的线程上触发`Elapsed`事件,避免了阻塞UI线程。 ...
在Flex框架中,计时器(Timer)类是实现周期性任务调度的重要工具之一。本文将深入解析一个简单的Flex计时器示例代码,并详细介绍其工作原理、应用场景以及如何通过计时器来优化程序性能。 #### 一、Flex计时器概述...
标题 "多个 timer 使用示例" 暗示我们即将探讨的是如何在编程环境中,特别是使用 Progress 4GL(通常简称为 PB,即 PowerBuilder)语言,有效地管理并使用多个计时器(timer)对象。Progress 4GL 是一种面向对象的...
在代码编辑器中,双击`Timer`控件,Visual Studio会自动生成`Tick`事件的事件处理函数。示例代码如下: ```csharp private void timer1_Tick(object sender, EventArgs e) { // 获取当前时间 DateTime ...
STM32F407是意法半导体...总之,STM32F407 DAC+DMA+Timer实现的任意波形发生器是一种高效、灵活的工具,它利用了微控制器的硬件资源,实现了高速、实时的波形生成,对于教学、实验和产品研发具有很高的实用价值。
-Timer实现两路频率和占空比可调的代码源代码 默认两路,可删减路数,步骤见注释 不明白的看注释,注释详细 代码已经封装好,更改头文件即可更改相关接口 使用STM32单片机F1系列ZET6芯片,Timer定时器输出两路占空比...
在提供的压缩包文件`ch08_timer`中,可能包含了一些示例代码,展示了如何使用`Timer`和`TimerTask`来实现进度条的更新或其他定时任务。通过学习和理解这些代码,开发者可以更好地掌握`Timer`类的用法,并将其应用到...
PB9多Timer事件实例是PowerBuilder 9.0中关于定时器(Timer)使用的深入探讨。在编程领域,定时器是一种常见的工具,用于在特定时间间隔执行某项任务,这在许多应用程序中都非常实用,例如数据刷新、定时提醒或者...