UI 自动化:如何更改水平滚动条自动化元素的值

本文关键字:自动化 元素 滚动条 何更改 UI 水平 | 更新日期: 2023-09-27 18:36:56

我正在尝试将水平滚动条的值从 -1 更改为 -2。我能够访问它..但接下来我必须更改它的值。

AutomationElement _sideBar = _ClickButtonElement.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.ClassNameProperty, "WindowsForms10.SCROLLBAR.app.0.378734a"));

_clickButtonElement是滚动条父窗口的自动化元素。

UI 自动化:如何更改水平滚动条自动化元素的值

滚动条通常支持 RangeValuePattern。使用类似以下内容:

RangeValuePattern range = scrollbar.GetCurrentPattern(RangeValuePattern.Pattern) as RangeValuePattern;
range.SetValue(50); // Set to half way point

请注意,通常滚动条规范化为 0..100,而不考虑内部值。因此,如果滚动条在内部使用值 -5 到 5,则滚动条的中间点 0 实际上将通过 RangeValuePattern 显示为 50。

您可能希望使用"检查"工具来确保获得正确的元素,并且它也支持此模式。在编写任何代码之前,还可以使用 Inspect 通过其 UI 调用 RangeValue.SetValue()。

AutomationElement aeForm = AutomationElement.FromHandle(windowPtr);
AutomationElementCollection buttonCollection = aeForm.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ScrollBar));          
AutomationElement aeButton = buttonCollection[1];
RangeValuePattern rcpattern = (RangeValuePattern)aeButton.GetCurrentPattern(RangeValuePattern.Pattern);
rcpattern.SetValue(50.00);