{"record":{"id":"54913a3dcc959707","repo":"dotnet/wpf","slug":"invalidenumargumentexception-capturemode-int-capturemode","errorCode":null,"errorMessage":"InvalidEnumArgumentException(\"captureMode\", (int)captureMode, typeof(CaptureMode))","messagePattern":"InvalidEnumArgumentException\\(\"captureMode\", \\(int\\)captureMode, typeof\\(CaptureMode\\)\\)","errorType":"exception","errorClass":"InvalidEnumArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/MouseDevice.cs","lineNumber":282,"sourceCode":"        /// <summary>\n        ///     Captures the mouse to a particular element.\n        /// </summary>\n        public bool Capture(IInputElement element)\n        {\n            return Capture(element, CaptureMode.Element);\n        }\n\n        /// <summary>\n        ///     Captures the mouse to a particular element.\n        /// </summary>\n        public bool Capture(IInputElement element, CaptureMode captureMode)\n        {\n            int timeStamp = Environment.TickCount;\n//             VerifyAccess();\n\n            if (!(captureMode == CaptureMode.None || captureMode == CaptureMode.Element || captureMode == CaptureMode.SubTree))\n            {\n                throw new System.ComponentModel.InvalidEnumArgumentException(\"captureMode\", (int)captureMode, typeof(CaptureMode));\n            }\n\n            if (element == null)\n            {\n                captureMode = CaptureMode.None;\n            }\n\n            if (captureMode == CaptureMode.None)\n            {\n                element = null;\n            }\n\n            // Validate that elt is either a UIElement, a ContentElement or a UIElement3D.\n            DependencyObject eltDO = element as DependencyObject;\n            if (eltDO != null && !InputElement.IsValid(element))\n            {\n                throw new InvalidOperationException(SR.Format(SR.Invalid_IInputElement, eltDO.GetType()));\n            }","sourceCodeStart":264,"sourceCodeEnd":300,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/MouseDevice.cs#L264-L300","documentation":"MouseDevice.Capture throws System.ComponentModel.InvalidEnumArgumentException when captureMode is not one of CaptureMode.None, CaptureMode.Element, or CaptureMode.SubTree. WPF explicitly validates the enum before processing the capture request.","triggerScenarios":"Calling mouse.Capture(element, (CaptureMode)badValue) with an undefined enum value, typically from an int cast, deserialization, or a computed flag combination.","commonSituations":"Persisting CaptureMode as an int in settings and casting back unchecked; passing a bitwise combination of CaptureMode values which the enum does not define.","solutions":["Validate with Enum.IsDefined(typeof(CaptureMode), value) before calling Capture","Only pass the named CaptureMode members (None/Element/SubTree)","Fix the serialization/deserialization path that produced the invalid value"],"exampleFix":"// before\nmouse.Capture(target, (CaptureMode)savedInt); // throws on bad value\n// after\nCaptureMode mode = Enum.IsDefined(typeof(CaptureMode), savedInt)\n    ? (CaptureMode)savedInt\n    : CaptureMode.Element;\nmouse.Capture(target, mode);","handlingStrategy":"validation","validationCode":"if (!Enum.IsDefined(typeof(CaptureMode), (int)captureMode))\n    throw new InvalidEnumArgumentException(nameof(captureMode), (int)captureMode, typeof(CaptureMode));\nmouse.Capture(element, captureMode);","typeGuard":"static bool IsValidCaptureMode(CaptureMode m) =>\n    m == CaptureMode.None || m == CaptureMode.Element || m == CaptureMode.SubTree;","tryCatchPattern":"try { mouse.Capture(element, captureMode); }\ncatch (InvalidEnumArgumentException) { mouse.Capture(element, CaptureMode.Element); }","preventionTips":["Only pass literal CaptureMode.None/Element/SubTree","Validate deserialized CaptureMode values with Enum.IsDefined","Do not bitwise-combine CaptureMode values"],"tags":["wpf","mouse","capture","enum","argument-validation"],"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-21T21:30:21.729Z"}