是否可以结合两个条件

本文关键字:两个 条件 结合 是否 | 更新日期: 2023-09-27 18:34:42

>我有两个条件:

            if (someOtherStuff && Keyboard.Modifiers == ModifierKeys.Control)
            {
                e.Cancel = true;
            }
            if (someOtherStuff && Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift))
            {
                e.Cancel = true;
            }

我想知道是否有可能将这两个if clauses合二为一? 或者我的方式是正确的?如果他们按住Control按钮,也如果他们按住Control and Shift按钮

是否可以结合两个条件

由于ModifierKeys枚举是用 Flags 属性标记的,因此您可以使用按位 AND 检查组合键是否包含 Control 键,我相信这就是您所追求的:

if (someOtherStuff && ((int)Keyboard.Modifiers & (int)ModifierKeys.Control) != 0)
{
    e.Cancel = true;
}
if ((someOtherStuff && Keyboard.Modifiers == ModifierKeys.Control) ||
 (someOtherStuff && Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift))
{
    e.Cancel = true;
}
你可以

这样做:

if (someOtherStuff && (Keyboard.Modifiers == ModifierKeys.Control ||
                       Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift)))
{
    e.Cancel = true;
}

还是您还有其他想法?