winforms - How to use mousehover delay in c#? -
i using mousehover click in c# want wait 2-3 sec before click , if cursor not stay on button 2 or more seconds, won't click.
you implement functionality deriving button class:
using system; using system.windows.forms; namespace mousehoverdelay { public class hoverbutton : button { protected system.timers.timer timer; public bool ishoverenabled { get; set; } public double delay { get; set; } public event system.timers.elapsedeventhandler timerelapsed { add { timer.elapsed += value; } remove { timer.elapsed -= value; } } public hoverbutton() { // defaults: hover trigger enabled 3000 ms delay ishoverenabled = true; delay = 3000; timer = new system.timers.timer { autoreset = false, interval = delay }; } protected override void onmouseenter(eventargs e) { base.onmouseenter(e); if (ishoverenabled) { timer.start(); } } protected override void onmouseleave(eventargs e) { base.onmouseleave(e); timer.stop(); } } } after adding form need set it's delay , handler method inside initializecomponent() method of form:
this.btnhovertest.delay = 2000; this.btnhovertest.timerelapsed += timer_elapsed; and implement handler in form:
using system; using system.windows.forms; namespace mousehoverdelay { public partial class form1 : form { public form1() { initializecomponent(); } // triggers when delay milliseconds have passed since hovering mouse on control protected void timer_elapsed(object o, eventargs e) { messagebox.show("hovered 2 seconds!"); } } }
Comments
Post a Comment