如何获取当前活动模态表单的引用?

Grz*_*nio 7 .net c# winforms

我正在编写一个小类来驱动win表单应用程序的集成测试.测试驱动程序类可以访问主Form,并查找需要按名称使用的控件,并使用它来驱动测试.要查找控件,我将遍历Control.Controls树.但是,当我想在对话框窗口(显示为对话框的自定义窗体)中获得控件时,我会陷入困境.我该如何掌握它?

Jul*_*lin 27

您可以使用static Form.ActiveForm属性获取对当前活动表单的引用.

编辑:如果没有Form焦点,Form.ActiveForm将返回null.
解决这个问题的一种方法是使用Application.OpenForms集合并检索最后一个项目,Form当使用ShowDialog以下项目显示时,它将处于活动状态:

// using Linq:
lastOpenedForm = Application.OpenForms.Cast<Form>().Last()
// or (without Linq):
lastOpenedForm = Application.OpenForms[Application.OpenForms.Count - 1]
Run Code Online (Sandbox Code Playgroud)