Mar*_*erl 5 .net c# wpf events coding-style
是否有更好的方法来检查所有鼠标按钮的按钮状态,而不是检查任何不同的按钮额外?
var mouseEventArgs = (System.Windows.Input.MouseEventArgs)e.StagingItem.Input;
if (mouseEventArgs.LeftButton == MouseButtonState.Released &&
mouseEventArgs.MiddleButton == MouseButtonState.Released &&
mouseEventArgs.RightButton == MouseButtonState.Released &&
mouseEventArgs.XButton1 == MouseButtonState.Released &&
mouseEventArgs.XButton2 == MouseButtonState.Released)
{
return;
}
Run Code Online (Sandbox Code Playgroud)
如果没有,如果不重复自己,我怎么能更优雅呢?
提前致谢!
我不认为除了将其重构为方法之外你还能做很多事情,因为所有按钮都没有预定义的集合.如果您希望它完全看不见,您可以使用这样的扩展方法:
public static class Extensions
{
public static bool CheckUniformButtonState(this MouseButtonEventArgs e, MouseButtonState state)
{
switch (state)
{
case MouseButtonState.Pressed:
return (e.LeftButton == MouseButtonState.Pressed &&
e.RightButton == MouseButtonState.Pressed &&
e.MiddleButton == MouseButtonState.Pressed &&
e.XButton1 == MouseButtonState.Pressed &&
e.XButton2 == MouseButtonState.Pressed);
case MouseButtonState.Released:
return (e.LeftButton == MouseButtonState.Released &&
e.RightButton == MouseButtonState.Released &&
e.MiddleButton == MouseButtonState.Released &&
e.XButton1 == MouseButtonState.Released &&
e.XButton2 == MouseButtonState.Released);
default:
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
(并不是所有人都会检查是否按下所有5个按钮..)
然后你可以这样检查:
if (mouseEventArgs.CheckUniformButtonState(MouseButtonState.Released))
{
return;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9338 次 |
| 最近记录: |