是否可以使用c#UI自动化(与UIspy.exe相同的逻辑)更改winforms应用程序中的选定项目?我想将所选项目更改为特定项目(我知道它在列表中的索引/位置)。
答案 0 :(得分:2)
public static void ActionSelectComboBoxItem(AutomationElement comboBoxElement, int indexToSelect){
if(comboBoxElement == null)
throw new Exception("Combo Box not found");
//Get the all the list items in the ComboBox
AutomationElementCollection comboboxItem = comboBoxElement.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem));
//Expand the combobox
ExpandCollapsePattern expandPattern = (ExpandCollapsePattern)comboBoxElement.GetCurrentPattern(ExpandCollapsePattern.Pattern);
expandPattern.Expand();
//Index to set in combo box
AutomationElement itemToSelect = comboboxItem[indexToSelect];
//Finding the pattern which need to select
SelectionItemPattern selectPattern = (SelectionItemPattern)itemToSelect.GetCurrentPattern(SelectionItemPattern.Pattern);
selectPattern.Select();
}
答案 1 :(得分:1)
如何在动态生成列表的组合框中设置值。
就像我的情况一样
AutomationElementCollection comboboxItem = comboBoxElement.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem));
comboboxItem.Count为0
当我使用鼠标点击展开它时,在相同的组合框中显示所有值。
答案 2 :(得分:1)
继续sizu的回答 - 您需要在检索项目之前展开ComboBox。这些项目只有“存在” 当ComboBox扩展时,UIAutomation会受到关注。