2

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

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

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

4

2 回答 2

2

与普通枚举相比,该MouseButtons属性有点标志。这意味着它可以同时保存 和 之类MouseButtons.Left的值MouseButtons.Right。它通过使用1 / 0值中特定位的状态来表示状态来做到这一点。 MouseButtons.LeftMouseButtons.Right代表这些国家。

&操作称为bitwise and. 它将返回一个值,该值具有1左值和右值中的位。MouseButtons.Left因此,只有当该位设置MouseButtons为表示确实按下了左按钮时,此特定表达式才会是非零的

于 2013-08-27T15:49:23.953 回答
1

Control.MouseButtons是按位组合。

表达方式:

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

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

于 2013-08-27T15:48:15.433 回答