c# 如何判断鼠标的左键一直是按住的状态? dispatchertimer

比方说 ,我要做的是,鼠标左键长按三秒,然后 执行 Message.Show("按了3秒");
不循环。
也就是说,我要如何判断,鼠标左键 按下了3秒

一、添加引用
windowsbase
二、添加命名空间
using System.Windows.Threading;
三、定义一些全局变量
public System.Windows.Threading.DispatcherTimer dispatcherTimer;
public int count;//用于计时间
四、添加一些事件
包括鼠标按下、鼠标弹起、DispatcherTimer的tick()事件
private void frmMain_MouseDown(object sender, MouseEventArgs e)
{
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
count = 0;
dispatcherTimer.Start();
}

private void frmMain_MouseUp(object sender, MouseEventArgs e)
{
dispatcherTimer.Stop();
MessageBox.Show("按了"+count.ToString()+"秒");

}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
count++;
}

关于DispatcherTimer更全面的介绍,在
http://msdn.microsoft.com/zh-cn/library/system.windows.threading.dispatchertimer.aspx#Y336追问

恩,了解了,还有个问题。
我写在了鼠标按下的事件里

mousedown里有个事件,写的比如 Message.Show("不到2秒");
我现在想做的是,如果我按的事件不超过2秒,就执行上面的,如果超过了,就执行另一个,这个怎么弄?
因为我是放在画图软件里,比如画个圈, 鼠标点下就开始画,但如果在同一个点,点下鼠标2秒,鼠标的地方就挑菜单出来,这样的效果,dispatcherTimer 能做出来么
解决了,我追加30分,谢谢

追答

我提交了回答,但是百度没给力。。提交后不见了,我是第三次输入这东西了。。
后来我就直接发给你短信息了,请你查收~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-03
再MouseDown的事件里记录按下鼠标左键时的时间dateTime1.

然后在MouseUp事件里也记录一个时间dateTime2

同时在MouseUp事件里写如下代码:

int second = dateTime2.Second-dateTime1.Second;

Message.Show("按了"+second+"秒");追问

请问如何记录,能写个详细的方法么?

追答

就是设置一个全局变量
给这两个变量赋值就可以了.

很简单,不需要方法

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网