2013-12-09 83 views
0

想象一下,您有FormA和FormB。 FormA有一个ListBox1,用于显示DataSource1的值(可以是列表或数组,但底线是它使用ListBox.DataSource赋值)。 FormB将被实例化并由FormA调用。 FormA会修改(将单个行添加到列表或数组中,当时为1行)DataSource1在FormA中提供ListBox1。你如何要求FormA及其ListBox1重新加载DataSource1并显示由FormB修改的新值?目前FormA将包含源(列表或数组)的整个对象传递给FormB的构造函数中的FormB。我可以在FormB的构造函数中传递FormA引用,并以这种方式调用FormA的方法,但它是最有效的方法吗?请求表单执行控制更新

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

回答

0

事实证明,我是有错的。事件处理就是答案。 FormA应该有一个方法将数据源重新加载到ListBox1中。应该有另一个可以委托的方法,将对象作为发件人和EventArgs作为e。在formB实例化中,适当的FormB的事件处理程序应该像接受任何代理一样接收发送者和事件参数。在这种情况下,我可以使用FormClosedEventHandler。或者,该方法可以委派给DataSource1.DataSourceChangedEventHandler。就是这样!当事件被触发时,FormA作为观察者并通过委托执行自己的方法。

2

我认为你需要的observer Patterntutorial

如果它是你第一次使用观察员,你应该看看整个MVC Pattern