c# - 从子窗体访问主窗体

标签 c# winforms parent-child

我有一个简单的问题:我在 win-forms/c# 中有一个主窗体。它有一个绑定(bind)到数据库的列表框。

当我单击一个按钮时,会创建一个新表单。

当我单击子窗体上的按钮时,我想调用主窗体中存在的方法,该方法更新列表框,或者当子窗体关闭时调用该函数。

这可能吗??

最佳答案

有很多方法可以实现这一点,但这里有一个简单的方法。在您的主窗体中,当您创建并显示子窗体时,请这样做:

ChildForm child = new ChildForm();
child.Show(this); // this calls the override that takes Owner parameter

然后,当您需要从子窗体调用主窗体中的方法时,使用如下代码(假设您的主窗体是 MainForm 类型):

MainForm parent = (MainForm)this.Owner;
parent.CallCustomMethod();

一种更复杂的方法是使用一种依赖注入(inject)形式,您将在子窗体的构造函数中传递对父窗体(或更准确地说,对其接口(interface))的引用。但上述方法很简单,而且可能对您的目的足够有效(实际上,它本身就是一种依赖注入(inject)形式)。

关于c# - 从子窗体访问主窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5443932/

相关文章:

c# - Visual Studio 2017企业版是否提供Xamrin Page的设计?

c# - 为什么我们不能使用 expression-bodied 构造函数?

MySQLCommandBuilder 和外键

Javascript父子树合并

Symfony2 - 从同一表单保存子级和父级

c# - DateTime 类型的 SQL 输出中不显示毫秒

c# - 使用 VSTO 在 Word 中动态创建的表格后插入文本

c# - 如何使应用程序具有表单而不是表单?

c++ - visual studio 窗口从其他类调用函数

javascript - 在只有类、没有 ID 的 div 中获取特定的 <p>