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

时间:2013-01-31 01:36:10

标签: c# winforms ui-automation

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

stack overflow article开始,答案似乎是否定的,除非我将应用程序切换到WPF应用程序(因此我可以使用XAML来定义控件)。

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

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

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

1 个答案:

答案 0 :(得分:4)

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

using System.Windows.Automation;

在您的代码中:

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

您也可以使用AutomationProperties.NameProperty作为UIAutomation名称。 AutomationProperties包含UIAutomation元素的所有属性(setter和getter),如名称所示。