使用 clickcount = 2 并防止在 c# wpf 中进入左键单击事件
Use clickcount = 2 and prevent from entering into left click event in c# wpf
我必须在鼠标左键单击时执行一些代码,我必须在双击时执行单独的操作,但我的 Canvas 不支持双击事件,所以,我正在努力完成工作通过 clickcount 但它也在进入 clickcount = 2 之前进入左键单击事件。我该如何防止这种情况?我知道我必须使用 e.handled = true 但我不明白在哪里。任何帮助将不胜感激。
void Canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if(e.ClickCount == 2)
{
// Some code
}
else
{
if(e.ChangedButton == MouseButton.Left)
{
// some code
}
}
}
正如@IDarkCoder 所说,这似乎已经在另一个问题上得到了回答。后面的代码应该是这样的:
private Timer _delayTimer;
public Constructor()
{
...
_delayTimer = new Timer(300);
_delayTimer.Elapsed += DelayTimer_Elapsed;
}
private void Canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left && e.ClickCount == 1)
{
_delayTimer.Start();
}
else if (e.ClickCount == 2)
{
e.Handled = true;
_delayTimer.Stop();
}
else
{
_delayTimer.Stop();
}
}
private void DelayTimer_Elapsed(object sender, ElapsedEventArgs e)
{
// Do your thing here for Single Left Click.
}
还要确保你的 Canvas
在 UI 中设置了 Background
,即使它是 Transparent
,否则你不会能够捕获鼠标事件。
我必须在鼠标左键单击时执行一些代码,我必须在双击时执行单独的操作,但我的 Canvas 不支持双击事件,所以,我正在努力完成工作通过 clickcount 但它也在进入 clickcount = 2 之前进入左键单击事件。我该如何防止这种情况?我知道我必须使用 e.handled = true 但我不明白在哪里。任何帮助将不胜感激。
void Canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if(e.ClickCount == 2)
{
// Some code
}
else
{
if(e.ChangedButton == MouseButton.Left)
{
// some code
}
}
}
正如@IDarkCoder 所说,这似乎已经在另一个问题上得到了回答。后面的代码应该是这样的:
private Timer _delayTimer;
public Constructor()
{
...
_delayTimer = new Timer(300);
_delayTimer.Elapsed += DelayTimer_Elapsed;
}
private void Canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left && e.ClickCount == 1)
{
_delayTimer.Start();
}
else if (e.ClickCount == 2)
{
e.Handled = true;
_delayTimer.Stop();
}
else
{
_delayTimer.Stop();
}
}
private void DelayTimer_Elapsed(object sender, ElapsedEventArgs e)
{
// Do your thing here for Single Left Click.
}
还要确保你的 Canvas
在 UI 中设置了 Background
,即使它是 Transparent
,否则你不会能够捕获鼠标事件。