{"record":{"id":"2100c7302a04b52c","repo":"dotnet/wpf","slug":"specified-argument-was-out-of-range-of-valid-values-2100c7","errorCode":null,"errorMessage":"Specified argument was out of range of valid values. (Parameter 'value')","messagePattern":"Specified argument was out of range of valid values\\. \\(Parameter 'value'\\)","errorType":"validation","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/ReachFramework/PrintConfig/PageResolution.cs","lineNumber":403,"sourceCode":"        /// </summary>\n        /// <remarks>\n        /// If this quality label setting is not specified yet, getter will return 0.\n        /// </remarks>\n        /// <exception cref=\"ArgumentOutOfRangeException\">\n        /// The value to set is not one of the standard <see cref=\"PageQualitativeResolution\"/>.\n        /// </exception>\n        public PageQualitativeResolution QualitativeResolution\n        {\n            get\n            {\n                return (PageQualitativeResolution)this[PrintSchemaTags.Keywords.PageResolutionKeys.QualitativeResolution];\n            }\n            set\n            {\n                if (value < PrintSchema.PageQualitativeResolutionEnumMin ||\n                    value > PrintSchema.PageQualitativeResolutionEnumMax)\n                {\n                    throw new ArgumentOutOfRangeException(nameof(value));\n                }\n\n                this[PrintSchemaTags.Keywords.PageResolutionKeys.QualitativeResolution] = (int)value;\n            }\n        }\n\n        #endregion Public Properties\n\n        #region Public Methods\n\n        /// <summary>\n        /// Converts the page resolution setting to human-readable string.\n        /// </summary>\n        /// <returns>A string that represents this page resolution setting.</returns>\n        public override string ToString()\n        {\n            return ResolutionX.ToString(CultureInfo.CurrentCulture) + \"x\" +\n                   ResolutionY.ToString(CultureInfo.CurrentCulture) +","sourceCodeStart":385,"sourceCodeEnd":421,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/ReachFramework/PrintConfig/PageResolution.cs#L385-L421","documentation":"PageTicket's PageResolution.QualitativeResolution setter validates that the assigned value lies within PrintSchema.PageQualitativeResolutionEnumMin..Max before storing it in the PrintTicket XML cache. Assigning any int outside the defined PageQualitativeResolution enum range throws ArgumentOutOfRangeException with parameter name 'value'.","triggerScenarios":"Setting printTicket.PageResolution.QualitativeResolution to a raw int cast or computed value that is not one of the defined PrintQualitativeResolution enumeration values (or an out-of-range int from external data).","commonSituations":"Persisting a PrintTicket to XML and reloading it on a newer/older framework version where enum values changed; casting an unvalidated database or user-supplied int into the enum; deserializing settings from config files.","solutions":["Verify the value assigned to QualitativeResolution is a valid PrintQualitativeResolution enum member within PageQualitativeResolutionEnumMin..Max","If loading from external data, validate or map the raw int to a known enum value before assignment","Catch ArgumentOutOfRangeException and reset to a default resolution"],"exampleFix":"// before\nres.QualitativeResolution = (int)userValue; // may be out of range\n// after\nif (userValue >= (int)PrintQualitativeResolution.ResolutionMin && userValue <= (int)PrintQualitativeResolution.ResolutionMax)\n    res.QualitativeResolution = userValue;\nelse\n    res.QualitativeResolution = PrintQualitativeResolution.Resolution300;","handlingStrategy":"validation","validationCode":"bool IsValidQualitativeResolution(int v) => v >= PrintSchema.PageQualitativeResolutionEnumMin && v <= PrintSchema.PageQualitativeResolutionEnumMax;","typeGuard":"static bool IsDefinedQualitativeResolution(object v) => v is int i && i >= PrintSchema.PageQualitativeResolutionEnumMin && i <= PrintSchema.PageQualitativeResolutionEnumMax;","tryCatchPattern":"try { ticket.PageResolution.QualitativeResolution = value; }\ncatch (ArgumentOutOfRangeException) { ticket.PageResolution.QualitativeResolution = PrintQualitativeResolution.Resolution300; }","preventionTips":["Always assign enum members, never raw ints","Validate persisted values with Enum.IsDefined before casting","Keep PrintTicket save/load schema versions aligned"],"tags":["wpf","printing","argumentoutofrange","enum"],"backgroundTag":"value-out-of-range","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"}