I just got to some bug in .NET I think, when I start a synchronous process in event of preview mouse down it causes mouse up events to show before all the mouse down events that should come after.
when I put the new process in the task it's the right order output:
DockPanel_PreviewMouseLeftButtonDown
Bell_Image_PreviewMouseLeftButtonDown
Bell_Image_MouseLeftButtonDown
DockPanel_MouseLeftButtonDown
DockPanel_PreviewMouseUp
Bell_Image_PreviewMouseUp
Bell_Image_MouseUp
DockPanel_MouseUp
but when start process synchronously in "DockPanel_PreviewMouseUp" the output is:
DockPanel_PreviewMouseLeftButtonDown
DockPanel_PreviewMouseUp
Bell_Image_PreviewMouseUp
Bell_Image_MouseUp
DockPanel_MouseUp
Bell_Image_PreviewMouseLeftButtonDown
Bell_Image_MouseLeftButtonDown
DockPanel_MouseLeftButtonDown
Why this is happening? thanks
the code that causes the order of the messed-up events:
XAML:
<DockPanel MouseLeftButtonDown="DockPanel_MouseLeftButtonDown" PreviewMouseLeftButtonDown="DockPanel_PreviewMouseLeftButtonDown" MouseUp="DockPanel_MouseUp" PreviewMouseUp="DockPanel_PreviewMouseUp">
<Grid>
<Image x:Name="Bell_Image" Source="Bell.png" PreviewMouseLeftButtonDown="Bell_Image_PreviewMouseLeftButtonDown" MouseLeftButtonDown="Bell_Image_MouseLeftButtonDown" MouseUp="Bell_Image_MouseUp" PreviewMouseUp="Bell_Image_PreviewMouseUp"/>
</Grid>
</DockPanel>
code behind C#:
private void Bell_Image_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Bell_Image_PreviewMouseLeftButtonDown");
}
private void Bell_Image_MouseUp(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Bell_Image_MouseUp");
}
private void DockPanel_MouseUp(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("DockPanel_MouseUp");
}
private void DockPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("DockPanel_MouseLeftButtonDown");
}
private void Bell_Image_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Bell_Image_PreviewMouseUp");
}
private void DockPanel_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("DockPanel_PreviewMouseUp");
}
private void Bell_Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Bell_Image_MouseLeftButtonDown");
}
private void DockPanel_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("DockPanel_PreviewMouseLeftButtonDown");
Process.Start("Some_File.pdf");
}
I expected it to not mess with the order of the events, interested to know if its a bug or if there is an explanation for that