2
考慮一個示例WPF應用程序,它具有帶滾動的圖像查看器。 用戶可以通過按箭頭鍵以及通過鼠標滾動來滾動圖像。如何在C#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;
}
}
你說的'在鼠標滾輪(滾動)事件,鍵按下事件意味着不應該工作,反之亦然。「?你是否希望事件'Grid_MouseWheel'和'Window_KeyDown'不被同時觸發或其他東西? – CarbineCoder
是的。當發生事件處理程序時,不應該同時觸發事件處理程序。 – raj
事件處理函數的默認行爲滿足您的條件 – CarbineCoder