【发布时间】:2021-07-26 10:55:05
【问题描述】:
我已经研究这个问题一段时间了,但似乎找不到有效的解决方案。我想从另一个 UserControl 中的方法调用一个方法 UserControl。
在 UserControl1 我有一个方法:
public void update(int lineNum, double price)
{
// do stuff...
// then call the method in another UserControl
UserControl2 uc2 = new UserControl2();
uc2.refreshList();
}
在 UserControl2 中,我有一个方法:
public void refreshList()
{
// do stuff....
}
当然,除了简单地创建 UserControl 的对象并以这种方式调用该方法之外,我还尝试了其他方法,但似乎没有任何效果。
【问题讨论】:
-
也许你解释一下你为什么要这样做。可能这是一个 XY 问题
-
这种用户控件的紧密耦合并不好。相反,在第一个用户控件中引发一个事件,并让托管控件的表单调用另一个用户控件中的 RefreshList 方法。
-
另外:
new UserControl2()将创建第二个控件的新实例,在这个新实例上调用 refreshList 然后丢弃该实例。可能不是你想要的。 -
@Klamsi 我想这样做是因为我希望在调用 update() 时更新一次 tablelayoutpanel。问题是 tablelayourpanel 与 UserControl1 不在同一个用户控件中。
-
还是有点模糊。但也许这有帮助?有人调用update()。理想情况下,这个人的方法可以准确地描述正在发生的事情。例如“插入新价格项目”。这个人负责所有的用户控件做正确的事情。不是 UserControls 本身。让 UI 尽可能地呆板。