我试图从微调器中获取值,以检查它是否通过 C# 中的 AutomationElement 正确输入。我目前正在做的是尝试通过 TryGetCurrentPattern
获取它,如下所示,但是它只返回 0.0 作为值,尽管在微调器中显示了不同的值(例如 1)。
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 中获取数值?
最佳答案
Windows 窗体不支持微调器控件 (NumericUpDown) 的自动化。实际上,它支持但它给你错误的值(value)观。使用像 FlaUI 这样的库来获取微调器的值。这是通过 Win32 消息完成的(将消息 WM_GETTEXT 发送到微调器内的编辑窗口)。最好的问候。
关于c# - 如何通过 RangeValuePattern 从 AutomationElement 中获取微调器的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31342719/