一個好方法是以希望開始通信的形式聲明委託。您需要代理和回撥功能:
public delegate void SetValueDelegate(string value);
public SetValueDelegate SetValueCallback;
另一種形式可以附加到此代表。在那一刻,這兩種形式都知道對方,但片刻後沒有:
firstForm.SetValueCallback += new SetValueDelegate(secondForm.SetValueFunction);
第二種形式有權宣佈該委託定義相匹配的功能:
public void SetValueFunction(string value)
{
// do something
}
現在第一種形式可以使用委託使用第二形式的附着到委託所有其它形式或類功能(和:
SetValueCallback(txtParam.Text);
編輯:做了一個完整的例子
using System;
namespace DelegateTest
{
public delegate void SetValueDelegate(string value);
public class Class1
{
public SetValueDelegate SetValueCallBack;
public void Test()
{
if(SetValueCallBack != null)
{
SetValueCallBack("Hello World!");
}
}
}
public class Class2
{
public void SetValueFunction(string value)
{
Console.WriteLine(value);
}
}
public class Launcher
{
public static void Main(string[] args)
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
c1.SetValueCallBack += new SetValueDelegate(c2.SetValueFunction);
c1.Test();
}
}
}
如何使主窗體的子窗體屬性? [形式之間溝通]的 – kenny 2010-12-14 11:33:00
可能重複(http://stackoverflow.com/questions/4373660/communicating-between-forms) – 2010-12-14 12:11:07
答案是這裏 [通訊兩者中的C#Windows形式] [1] [1]:http://stackoverflow.com/questions/1665533/communicate-between-two-windows-forms-in-c-sharp – 2014-07-27 17:44:53