{"record":{"id":"85fe4bcd053972b3","repo":"dotnet/wpf","slug":"invalidenumargumentexception-modifiers-int-modifiers-typeof-85fe4b","errorCode":null,"errorMessage":"InvalidEnumArgumentException(\"modifiers\", (int)modifiers, typeof(ModifierKeys))","messagePattern":"InvalidEnumArgumentException\\(\"modifiers\", \\(int\\)modifiers, typeof\\(ModifierKeys\\)\\)","errorType":"exception","errorClass":"InvalidEnumArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/Command/MouseGesture.cs","lineNumber":61,"sourceCode":"        ///  constructor\n        /// </summary>\n        /// <param name=\"mouseAction\">Mouse Action</param>\n        public MouseGesture(MouseAction mouseAction): this(mouseAction, ModifierKeys.None)\n        {\n        }\n\n        /// <summary>\n        ///  Constructor\n        /// </summary>\n        /// <param name=\"mouseAction\">Mouse Action</param>\n        /// <param name=\"modifiers\">Modifiers</param>\n        public MouseGesture( MouseAction mouseAction,ModifierKeys modifiers)   // acclerator action\n        {\n            if (!MouseGesture.IsDefinedMouseAction(mouseAction))\n                throw new InvalidEnumArgumentException(\"mouseAction\", (int)mouseAction, typeof(MouseAction));\n\n            if (!ModifierKeysConverter.IsDefinedModifierKeys(modifiers))\n                throw new InvalidEnumArgumentException(\"modifiers\", (int)modifiers, typeof(ModifierKeys));\n\n            _modifiers = modifiers;\n            _mouseAction = mouseAction;\n\n            //AttachClassListeners();\n        }\n#endregion Constructors\n        \n        //------------------------------------------------------\n        //\n        //  Public Methods\n        //\n        //------------------------------------------------------\n\n#region Public Methods\n        /// <summary>\n        /// Action \n        /// </summary>","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/Command/MouseGesture.cs#L43-L79","documentation":"The same MouseGesture(MouseAction, ModifierKeys) constructor also validates that modifiers is a defined ModifierKeys value; an undefined value throws InvalidEnumArgumentException naming the 'modifiers' parameter.","triggerScenarios":"new MouseGesture(MouseAction.LeftClick, (ModifierKeys)64) — an int cast to ModifierKeys outside defined members (None, Alt, Control, Shift, Windows and defined combinations).","commonSituations":"Persisting modifier state as an int and combining flags ad hoc, or macOS/Linux key mappings translated to undefined ModifierKeys bits.","solutions":["Use only ModifierKeys enum members or valid combinations of them via the | operator.","Validate with ModifierKeysConverter.IsDefinedModifierKeys(modifiers) (or mask-check against the defined flags) before constructing.","Normalize incoming modifier data at deserialization time to the nearest valid ModifierKeys."],"exampleFix":"// before\nvar gesture = new MouseGesture(MouseAction.RightClick, (ModifierKeys)rawBits);\n// after\nvar mods = (ModifierKeys)rawBits & (ModifierKeys.Alt | ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Windows);\nvar gesture = new MouseGesture(MouseAction.RightClick, mods);","handlingStrategy":"validation","validationCode":"var allowed = ModifierKeys.Alt | ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Windows;\nif (((ModifierKeys)raw & ~allowed) != 0 || (ModifierKeys)raw == 0 && raw != 0) throw new ArgumentOutOfRangeException(nameof(raw));\nvar gesture = new MouseGesture(action, (ModifierKeys)raw);","typeGuard":"static bool IsValidModifiers(ModifierKeys m) => (m & ~(ModifierKeys.Alt|ModifierKeys.Control|ModifierKeys.Shift|ModifierKeys.Windows)) == 0;","tryCatchPattern":"try { var g = new MouseGesture(action, mods); } catch (InvalidEnumArgumentException ex) { /* normalize modifiers and retry */ }","preventionTips":["Build modifier values only from named ModifierKeys members with |","Mask unknown bits out of persisted modifier ints","Round-trip test serialized gestures"],"tags":["wpf","enum","modifier-keys"],"backgroundTag":"invalid-enum-value","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-22T01:17:13.364Z"}