目前,我开始循环PreviewMouseDown
,我正在考虑使用PreviewMouseUp
打破循环,但显然失败了。以下是我的方式。
public bool stopFlag = true;
public int abc = 0;
private void TestingDown(){
while(stopFlag)
{
abc++;
}
}
private void TestingUp()
{
stopFlag = false;
Message.show(abc);
}
实际上我的想法是创建一种按钮保持效果,比如智能手机,按住按钮3秒钟并做一些事情。但是按钮没有任何onHold
事件?
答案 0 :(得分:2)
启动Timer
中的PreviewMouseDown
并检查PreviewMouseUp
中的已用时间。
答案 1 :(得分:0)
在这种情况下,您的循环在与整个UI相同的线程中运行。但实际上你需要的是计算MouseDown和MouseUp事件之间的时间。
DateTime holdStartTime;
public MainWindow()
{
InitializeComponent();
PreviewMouseDown += new MouseButtonEventHandler(MainWindow_PreviewMouseDown);
PreviewMouseUp += new MouseButtonEventHandler(MainWindow_PreviewMouseUp);
}
void MainWindow_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
holdStartTime = DateTime.Now;
}
void MainWindow_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
if ((DateTime.Now - holdStartTime).TotalMilliseconds < 1000)
{
Console.WriteLine("Do something");
}
else
{
Console.WriteLine("Do something else");
}
}
答案 2 :(得分:0)
我认为你需要背景线程,因为UI线程在这个循环中很忙。 您可以参考以下链接获取更多信息。 [背景工作者]