2

我试图从中获取微调器中的值,以检查它是否通过 C# 中的 AutomationElement 正确输入。我目前正在尝试通过TryGetCurrentPattern如下所示的方式将其取出,但是尽管在微调器中显示了不同的值(例如 1),但它仅返回 0.0 的值。

if (spinnerAutoEle.TryGetCurrentPattern(RangeValuePattern.Pattern, out pattern)) 
{
    var valueRangePattern = (RangeValuePattern)pattern;
    return valueRangePattern.Current.Value;
}

此外,我注意到,valueRangePattern.Current尽管微调器受到限制,但在查看最大值和最小值的字段时也始终为 0.0。我也尝试ValuePattern过从微调器中取出一个,但它不会进入 if 语句if (spinnerAutoEle.TryGetCurrentPattern(ValuePattern.Pattern, out pattern))。是否可以通过这种方式从 Spinner 中获取数值?

4

3 回答 3

1

Windows 窗体不支持微调控件的自动化 (NumericUpDown)。实际上,它支持但它给你错误的值。使用像 FlaUI 这样的库来获取微调器的值。它通过 Win32 消息(SendMessage WM_GETTEXT 到微调器内的编辑窗口)完成。此致。

于 2019-12-13T14:04:06.593 回答
0

处理程序后处理程序的微调器 id 获取微调器主窗口标题,因为您使用进程 id 获得主窗口标题 samilarly soinner 有 id 所以将句柄转换为元素或使用该 id 获取我赢文本,这将为您提供微调器文本,过程为主要获胜标题基于 id 实际上微调器也有 id 常识是 itys 文本是标题

于 2016-06-28T10:29:48.177 回答
0

我建议使用 Windows SDK 附带的 Inspect 工具检查微调器的 UI 自动化树的结构。我发现在某些情况下(例如微调控件的某些 Winforms 实现),根据您使用的是 UI 自动化的托管版本还是本机版本,微调控件可能由自动化中的一个编辑框和两个按钮构成通过编辑框和值模式访问实际值的树。我意识到这是一个很晚的答案,但也许它可以帮助某人。

于 2016-06-28T07:46:30.440 回答