c# - 如何通过 RangeValuePattern 从 AutomationElement 中获取微调器的值?

标签 c# spinner ui-automation microsoft-ui-automation automationelement

我试图从微调器中获取值,以检查它是否通过 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/

相关文章:

c# - Owin 重启后重新连接 SignalR 客户端,但未发布消息

c# - 将linq中的字符串转换为int到大数据库上的实体

android - 如何在 Android 中设置微调器的提示

android - AppCompat - Spinner 无法在relativelayout 中工作

linux - 用于 UI 自动化的内存中 GUI session

windows - 支持 IAccessible 接口(interface)以在文本编辑器中移动插入符号的正确解决方案是什么?

c# - IQueryable<> 序列化 - C#-VS2008-WCF

c# - WinForms C# .Net 4.0 中的功能区

visual-studio-2005 - MFC:为什么我的旋转控制向后工作

用于查找并关闭 Windows 文件资源管理器对话框的 Powershell 命令