С# WPF - событие Canvas MouseMove срабатывает, даже когда мышь перемещается над дочерним элементом управления

Как сделать так, чтобы событие Canvas MouseMove срабатывало только в том случае, если моя мышь находится только над Canvas и только Canvas?

У меня есть TextBox в качестве дочернего элемента Canvas, и он все еще срабатывает, когда моя мышь перемещается по этому TextBox, я бы хотел, чтобы этого не происходило, он должен срабатывать только тогда, когда мышь перемещается по фону/пустому пространству Canvas, например.


person Joao Vitor    schedule 04.06.2018    source источник


Ответы (2)


Как сделать так, чтобы событие холста MouseMove срабатывало только в том случае, если моя мышь находится только над Canvas и только Canvas?

Вы не можете предотвратить запуск события, но вы можете проверить, находится ли мышь непосредственно над областью Canvas в вашем обработчике событий, и просто ничего не делать, если это не так:

private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
    if (Mouse.DirectlyOver == sender)
    {
        //your code...
    }
    //else, i.e. when the mouse moves over the TextBox or another child element, do nothing
}
person mm8    schedule 04.06.2018

Вы должны прослушать предварительную версию этого события на холсте PreviewMouseMove и установить e.Handled = true. Взгляните на этот URL-адрес https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/routed-events-overview

person Moatasem bakri    schedule 04.06.2018