c# - 我如何遍历特定表单的所有打开实例?

标签 c# winforms forms

我需要更新动态创建的 Form2 的列表框。假设在我必须更新这个 ListBox 的情况下(当然在 Form1 中)我没有这个 Form2 的引用所以我不能调用 UpdateList 方法(不,我不能让它静态) .

我什至不知道是否打开了 Form2,可能是也可能不是。

你有什么建议?

有没有办法循环遍历Form2的所有open istances?

代码示例:

//Form1

public void event()
{
    //UPDATE FORM2 LISTBOX
}

//SOMEWHERE IN FORM1

Form2 runTime = new Form2();

//Form2

public void UpdateList()
{
    //UPDATE LISTBOX
}

最佳答案

我不确定你到底想实现什么。但在我看来,您只需遍历打开的表单集合即可:

var formsList  = Application.OpenForms.OfType<Form2>();
listBox.Items.AddRange(formsList.Select(f=>f.Text).ToArray());

此行将为您提供应用程序中所有打开的 Form2 实例的 IEnumerable。您可能希望使用自己的字符串表示形式(而不是上面代码片段中使用的表单标题)

关于c# - 我如何遍历特定表单的所有打开实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646705/

相关文章:

c# - 使用 FindControl() 查找控件

c# - .Net 服务因新线程启动方法上的 FileNotFoundexception 而失败

c# - Infragistics UltraGrid - 网格初始化后的事件

jquery - document.forms[0].onsubmit 和 jQuery ("form").submit 之间的区别

c# - 在堆栈跟踪中使用正确的行号重新抛出异常

c# - 无效的嵌入语句错误 88

C# winforms如何在不同的事件处理程序中访问同一对象

C#在记事本状态栏显示行列号的代码

c++ - 使用 WinInet C++ 发布表单数据

php - Symfony2 验证可选字段