C#位运算实现:右键菜单如何将所有位标志设为OFF仅保留选中项开启
位运算逻辑实现方案
你需要的右键点击逻辑只需要直接将Filter属性赋值为当前选中的枚举值即可,代码如下:
else if (e.Button == MouseButtons.Right) { // 所有位设为OFF,仅当前选中项对应的位为ON Filter = filter; }
原理解释
- 由于
ObjectType是带有[Flags]特性的位枚举,每个枚举值对应独立的二进制位,直接赋值为当前点击的filter值,就会自动清空其他所有位的状态,仅保留当前选中的枚举值对应的位为开启状态,完全匹配你的需求。 - 如果你希望保留当前选中位的原有开关状态,仅清除其他位的状态,可以替换为
Filter &= filter;,这种写法下如果当前选中位原本是关闭状态,右键后仍然会保持关闭。
内容的提问来源于stack exchange,提问作者andyopayne
相关产品推荐
相关产品推荐

