首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FlaUI.UIA3访问DevExpress DataGrid行和列的等效代码生成

使用FlaUI.UIA3访问DevExpress DataGrid行和列的等效代码生成
EN

Stack Overflow用户
提问于 2020-01-25 20:54:36
回答 1查看 817关注 0票数 0

我正在使用FlaUI自动化我的WPF应用程序。我有一个来自DevExpressDevExpress控件。我希望访问任何单个行和该行的所有列,并使用FlaUI对其进行编辑。DevExpress论坛提供了以下示例,但这是针对UIA library.How的,我可以使用FlaUI库重写这个示例吗?

代码语言:javascript
复制
AutomationElement gridElem = AutomationElement.RootElement.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.LocalizedControlTypeProperty, "datagrid"));  
GridPattern gridPattern = (GridPattern)gridElem.GetCurrentPattern(GridPattern.Pattern);  
int rowCount = gridPattern.Current.RowCount;  
 List<object> values = new List<object>();  
 for (int i = 0; i < rowCount; i++) {  
    AutomationElement item = gridPattern.GetItem(i, 0);  
    ValuePattern valuePattern = (ValuePattern)item.GetCurrentPattern(ValuePattern.Pattern);  
    values.Add(valuePattern.Current.Value);

FlaUI & automation来说是非常新的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-10 06:57:48

最后,在DevExpress支持的帮助下,我能够实现我的意图。下面是运行良好的代码:)

代码语言:javascript
复制
public void CreateNewViewGrid(Grid grid)
        {
            var pattern = grid.Patterns.Grid;
            var rowCount = pattern.Pattern.RowCount;
            var colCount = pattern.Pattern.ColumnCount;
            var values = new List<object>();

            List<string> columnNames = new List<string>();
            columnNames.Add("Vessel Id");
            columnNames.Add("Voyage Id");
            columnNames.Add("Load Date");
            columnNames.Add("Dis Date");
            columnNames.Add("Vessel Name");
            columnNames.Add("Status");

            for (int i = 0; i < rowCount; i++)
            {

                var item = pattern.Pattern.GetItem(i, 0);
                var item2 = pattern.Pattern.GetItem(i, 1);
                var value = (item2.Patterns.Value.Pattern.Value).ToString();
                values.Add((value));

                foreach (var data in columnNames)
                {
                    if (value == data)
                    {

                        var itemStatus = item.AsGridCell();

                        itemStatus.Click();

                    }
                }

            }

            //Console.WriteLine(string.Join(", ", values));
            //return values;
        }

在此之前,使用FlaUI is necessary查找元素

网格(来自FlaUI.Core.AutomationElements的引用) private Grid grid=>windows.FindFirstDescendant(cf=>cf.ByAutomationID("dataGrid").AsGrid();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59913315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档