You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#位运算实现:右键菜单如何将所有位标志设为OFF仅保留选中项开启

位运算逻辑实现方案

你需要的右键点击逻辑只需要直接将Filter属性赋值为当前选中的枚举值即可,代码如下:

else if (e.Button == MouseButtons.Right) 
{
    // 所有位设为OFF,仅当前选中项对应的位为ON
    Filter = filter;
}

原理解释

  • 由于ObjectType是带有[Flags]特性的位枚举,每个枚举值对应独立的二进制位,直接赋值为当前点击的filter值,就会自动清空其他所有位的状态,仅保留当前选中的枚举值对应的位为开启状态,完全匹配你的需求。
  • 如果你希望保留当前选中位的原有开关状态,仅清除其他位的状态,可以替换为Filter &= filter;,这种写法下如果当前选中位原本是关闭状态,右键后仍然会保持关闭。

内容的提问来源于stack exchange,提问作者andyopayne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:06:03