打开两个表单并在form2上运行form1上的方法

时间:2014-03-27 15:08:04

标签: c# winforms

我有一个用于管理数据库的程序。我的数据库表内容显示在form1上的listview中。我正在使用form2来编辑数据库 当form2处于打开状态时form1仍然可见。

但是,当关闭form2时,在更新数据库之后,我希望form1刷新其listview以显示新更新的信息。

我有一个方法可以刷新listview上的form1。如何从form2执行此操作?

我已将该方法设置为公开但我仍然无法从form2访问它。

2 个答案:

答案 0 :(得分:1)

将form1的实例传递给form2的构造函数:

Form2 form2 = new Form2(this);

在form2的构造函数中,将对form1对象的引用存储为成员变量。

然后,从form2的相关部分,只需在form1上调用方法:

form1.RefreshListView();

答案 1 :(得分:1)

如果我理解正确的问题,一种方法是在创建Form2时注册一个事件:

var form2 = new Form2();
form2.Closed += (sender, args) => this.RefreshListView();

当form2关闭时,将触发Form.Closed事件。使用事件执行此操作的一个优点是Form2不需要知道有关Form1减少代码耦合的任何信息。