我有一个简单的问题:我在 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/