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

Joh*_*urn 10 c# ui-automation winforms

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

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

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

  AutomationElement formAutomation = AutomationElement.FromHandle(this.Handle);
  formAutomation.Current.Name = "SandboxResponseDialogName";
  formAutomation.Current.ClassName = "SandboxResponseDialogClassName";
  formAutomation.Current.AutomationId = "SandboxResponseDialogID;
Run Code Online (Sandbox Code Playgroud)

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

Mua*_*lig 6

如果你想UI Automation在代码中设置任何相关的东西,你需要使用这个:

using System.Windows.Automation;
Run Code Online (Sandbox Code Playgroud)

在你的代码中:

YourObjectClass element = // just get your element.
element.SetValue(AutomationProperties.AutomationIdProperty, "elementAutomationID");
Run Code Online (Sandbox Code Playgroud)

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