有没有办法在不使用XAML的情况下设置对象的AutomationID?

我需要自动化Winform应用程序。 如何像本文中的XAML一样设置AutomationID (或AutomationName )?

从这个堆栈溢出文章看 ,答案似乎是否定的,除非我将应用程序切换到WPF应用程序(因此我可以使用XAML来定义控件)。

我尝试过这种天真的方法:

  AutomationElement formAutomation = AutomationElement.FromHandle(this.Handle); formAutomation.Current.Name = "SandboxResponseDialogName"; formAutomation.Current.ClassName = "SandboxResponseDialogClassName"; formAutomation.Current.AutomationId = "SandboxResponseDialogID; 

但是在控制构造函数的这一点上,这些Automation属性只有getter; 没有二传手。

如果要在代码中设置与UI Automation相关的任何内容,则需要使用:

 using System.Windows.Automation; 

在你的代码中:

 YourObjectClass element = // just get your element. element.SetValue(AutomationProperties.AutomationIdProperty, "elementAutomationID"); 

您还可以将AutomationProperties.NameProperty用于UIAutomation名称。 AutomationProperties包含UIAutomation元素(setter和getter)的所有属性,顾名思义。