我有一段完整的呻吟,现在已被删除。所以我切入了追逐:
userControlA
userControlB
点击了某个按钮?userControlA
?this post中提供的答案是最佳解决方案吗?我正在寻找最佳解决方案。
答案 0 :(得分:1)
一个例子
public partial class UserControlA
{
// method to inform
public void DoSomething(string text)
{
... // do something with text
}
}
public partial class UserControlB
{
public event Action SomethingChanged;
public string SomeText {get; set;} // some property
private void button1Clicked(object sender, EventArgs e)
{
if(SomethingChanged != null)
SomethingChanged();
}
}
// in form contructor (for demonstration purpose)
var a = new UserControlA();
var b = new UserControlB();
this.Controls.Add(a);
this.Controls.Add(b);
var handler = () => a.DoSomething(b.SomeText);
b.SomethingChanged += handler;
现在,当您点击button1
中的UserControlB
时,UserControlA
会调用其DoSomething()
方法。表单用于传递事件,但您可以直接在UserControlA
订阅事件,您需要以某种方式传递UserControlB
的实例(属性,方法,构造函数)。