CF keyDown事件(定时)
答
那么,KeyDown对于捕获手指按下的时间长度来说是非常不相关的。手指的使用涉及事件Click
,MouseDown
,MouseUp
和MouseMove
。
为了得到你想要的行为,你应该感兴趣的事件是MouseDown
和MouseUp
。
我建议最好的方法是创建自己的控件基类。这里有一个我早些时候(未测试,但应该给你做什么总体思路):
public partial class BaseControl : UserControl
{
public BaseControl()
{
InitializeComponent();
base.MouseDown += new MouseEventHandler(BaseControl_MouseDown);
base.MouseUp += new MouseEventHandler(BaseControl_MouseUp);
MouseHeldTimer = new Timer();
MouseHeldTimer.Interval = 2000;
MouseHeldTimer.Tick += new EventHandler(mouseHeldTimer_Tick);
}
protected Timer MouseHeldTimer;
protected bool MouseIsDown;
void mouseHeldTimer_Tick(object sender, EventArgs e)
{
this.MouseHeldTimer.Enabled = false;
if (this.MouseHeldDown != null)
{
this.MouseHeldDown(sender, e);
}
}
void BaseControl_MouseDown(object sender, MouseEventArgs e)
{
this.MouseHeldTimer.Enabled = true;
}
void BaseControl_MouseUp(object sender, MouseEventArgs e)
{
this.MouseHeldTimer.Enabled = false;
}
public event MouseHeldDownHandler MouseHeldDown;
public delegate void MouseHeldDownHandler(object sender, EventArgs e);
}
基本上,MouseHeldTimer将开始2秒的时刻间隔用户触摸手指的屏幕。如果用户抬起他们的手指,则计时器停止。如果用户的手指停下的时间超过2秒,则代表事件MouseHeldDown
将会触发。然后,您可以通过以下操作捕捉形式对本次活动:
control.MouseHeldDown+= new EventHandler(control_MouseHeldDown);
另外,如果你只关心形式,你可以使用窗体的DoubleClick
事件作为将按住鼠标下来了之后火第二或两个。
+0
thanx为anwser。是的,我犯了一个错误,写了钥匙而不是鼠标。您的解决方案完美运作 – no9 2010-05-13 07:02:37
是的,泰克你提醒我!我非常学习C#和所有的框架,我完全忘记接受anwser :) – no9 2010-05-13 07:03:43