【发布时间】:2015-08-05 14:37:38
【问题描述】:
我正在使用以下 .NET 4.5.2 代码:
if (this.ContainsFocus && keyData == (Keys.Tab|Keys.Shift))
{ ... }
为什么当 ContainsFocus (bool = true) 和 keyData (System.Windows.Forms.Keys) 为 Keys.O 时表达式为真Keys.Shift?
如你所见,断点被命中:
使用这个值:
解决此错误 (?!) 的方法是:
if (this.ContainsFocus && (int)keyData == (int)(Keys.Tab|Keys.Shift))
{ ... }
【问题讨论】:
-
你使用哪个控制事件?
-
Keys: "不要将此枚举中的值用于组合按位运算。枚举中的值不是互斥的。"
-
-
@AdamHouldsworth - 是的,我确实发现将
FlagsAttribute应用于该枚举......很麻烦。
标签: c# .net enums flags enum-flags