我试图从中获取微调器中的值,以检查它是否通过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中获取数值?
答案 0 :(得分:0)
我建议使用Windows SDK附带的Inspect工具检查微调器的UI Automation树的结构。我发现在某些情况下(例如spinner控件的一些Winforms实现),并且根据您是使用UI自动化的托管版本还是本机版本,可以从编辑框和自动化中的两个按钮构建微调控件通过编辑框和值模式访问实际值的树。我意识到这是一个非常晚的答案,但也许它可以帮助某人。
答案 1 :(得分:0)
spinner id to handler后处理程序获取微调器主窗口标题,因为你获得主窗口标题使用进程ID samilarly soinner有id所以将句柄转换为元素或使用该id得到mein win文本,将给你微调文本,主要胜利标题的过程基于id实际上微调器也有id而且常识是itys文本是标题
答案 2 :(得分:0)
Windows窗体不支持微调器控件的自动化(NumericUpDown)。实际上,它支持但给您错误的值。使用FlaUI之类的库来获取微调器的价值。它是通过Win32消息完成的(将SendMessage WM_GETTEXT发送到微调器内的编辑窗口)。最好的问候。