使用按位逻辑来测试Control.MouseButtons

时间:2013-08-27 15:45:06

标签: c# winforms

有人可以解释一下这是如何运作的吗?

if ((Control.MouseButtons & MouseButtons.Left) != 0)

MSDN只说Control.MouseButtons属性获取一个值,指示哪个鼠标按钮处于按下状态,但我无法理解它是如何'&'有效,为什么它应该与0不同。

2 个答案:

答案 0 :(得分:2)

MouseButtons属性是一个标志与正常枚举。这意味着它可以同时保存MouseButtons.LeftMouseButtons.Right等值。它通过使用值中特定位的1 / 0状态来表示状态。 MouseButtons.LeftMouseButtons.Right代表这些州。

&操作称为bitwise and。它将返回一个值,该值在左侧和右侧都具有1的位。因此,当在MouseButtons.Left中设置MouseButtons位意味着左按钮确实被按下时,此特定表达式将仅为非零

答案 1 :(得分:1)

Control.MouseButtons是一种按位组合。

表达式:

if ((Control.MouseButtons & MouseButtons.Left) != 0)

正在检查是否设置了位MouseButtons.Left(值为1)。