考虑一个示例WPF应用程序,它具有带滚动的图像查看器。 用户可以通过按箭头键和鼠标滚动来扫描图像。
如何相互排除这两个事件Keydown和MouseWheel。 ?
在MouseWheel(滚动)事件期间,按键事件不应该起作用,反之亦然。
我尝试过使用旗帜,但它没有成功。
我试过的示例代码。
internal bool KeyPress; // by default false
internal bool IsMouseScrollActive; // by default false
private void Grid_MouseWheel(object sender, MouseWheelEventArgs e)
{
if (!KeyPress)
{
IsMouseScrollActive = true;
// event handlers here
IsMouseScrollActive = false;
}
}
private void Window_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Left:
case Key.Down:
case Key.Right:
case Key.Up:
if (!IsMouseScrollActive)
{
KeyPress = true;
// event handlers here
}
break;
}
}
private void Window_KeyUp(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Left:
case Key.Down:
case Key.Right:
case Key.Up:
if (!IsMouseScrollActive)
{
KeyPress = false;
// event handlers here
}
break;
}
}
答案 0 :(得分:0)
使用您的符号:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (IsMouseScrollActive)
e.Handled = true; //will cancel KeyDown event
}
类似的逻辑适用于您的滚动或键盘事件......