{"record":{"id":"652f268470965cc0","repo":"dotnet/wpf","slug":"sr-rangevaluemax-windowsslider","errorCode":null,"errorMessage":"SR.RangeValueMax","messagePattern":"SR\\.RangeValueMax","errorType":"exception","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/WindowsSlider.cs","lineNumber":276,"sourceCode":"        private int GetSliderValue ()\n        {\n            int value = Misc.ProxySendMessageInt(_hwnd, NativeMethods.TBM_GETPOS, IntPtr.Zero, IntPtr.Zero);\n\n            // adding support for if WindowsStyle has reversed bit set for the slider.\n            if ((this.WindowStyle & NativeMethods.TBS_REVERSED) != 0)\n            {\n                int maxValue = Misc.ProxySendMessageInt(_hwnd, NativeMethods.TBM_GETRANGEMAX, IntPtr.Zero, IntPtr.Zero);\n                value = maxValue - value;\n            }\n            return value;\n        }\n\n        private void SetSliderValue (int val)\n        {\n            // check for the range\n            if (val > Max)\n            {\n                throw new ArgumentOutOfRangeException(\"value\", val, SR.RangeValueMax);\n            }\n            else if (val < Min)\n            {\n                throw new ArgumentOutOfRangeException(\"value\", val, SR.RangeValueMin);\n            }\n\n            Misc.ProxySendMessage(_hwnd, NativeMethods.TBM_SETPOS, new IntPtr(1), new IntPtr(val));\n        }\n\n        private int LineSize\n        {\n            get\n            {\n                return Misc.ProxySendMessageInt(_hwnd, NativeMethods.TBM_GETLINESIZE, IntPtr.Zero, IntPtr.Zero);\n            }\n        }\n\n        private int Min","sourceCodeStart":258,"sourceCodeEnd":294,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/WindowsSlider.cs#L258-L294","documentation":"WindowsSlider.SetSliderValue checks the requested value against the slider's Max property; val > Max throws ArgumentOutOfRangeException with SR.RangeValueMax. The slider (trackbar) control rejects RangeValue values above its maximum position.","triggerScenarios":"RangeValuePattern.SetValue on a slider-backed element with a value greater than the trackbar's current Max (TBM_GETRANGE), at WindowsSlider.cs:276.","commonSituations":"Hardcoding 100 when the trackbar range was configured smaller (e.g. 0-10); volume/brightness sliders whose range differs across Windows versions or drivers; using cached Maximum after the slider's range changed.","solutions":["Clamp the value to the slider's current [Min, Max] range read fresh via RangeValuePattern.Current before calling SetValue.","Query the control's actual range (e.g. TBM_GETRANGE / RangeValue.Current.Maximum) instead of assuming 0-100.","Catch ArgumentOutOfRangeException and retry with a clamped value."],"exampleFix":"// before\nslider.SetValue(100);\n// after\nvar rv = (RangeValuePattern)sliderElement.GetCurrentPattern(RangeValuePattern.Pattern);\nslider.SetValue(Math.Min(100, rv.Current.Maximum));","handlingStrategy":"validation","validationCode":"var rv = (RangeValuePattern)element.GetCurrentPattern(RangeValuePattern.Pattern);\nval = Math.Clamp(val, rv.Current.Minimum, rv.Current.Maximum);","typeGuard":null,"tryCatchPattern":"try { rv.SetValue(val); }\ncatch (ArgumentOutOfRangeException) { rv.SetValue(Math.Clamp(val, rv.Current.Minimum, rv.Current.Maximum)); }","preventionTips":["Query the slider's actual range instead of assuming 0-100","Clamp all SetValue inputs with Math.Clamp","Re-read range when slider configuration (min/max) can change at runtime"],"tags":["uiautomation","argument-out-of-range","range-value-pattern","slider","wpf"],"backgroundTag":"argument-out-of-range","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"}