再给你个示例:
Form1.cs部分代码:
//定义委托
public delegate bool CompareDelegate(int a, int b);
public class MyCompare
{
///<summary>
/// 定义一个方法,符合上面定义的委托所要求的方法细节,返回值为bool型,两个参数分别为int型
///</summary>
///<param name="x"></param>
///<param name="y"></param>
///<returns></returns>
public static bool CompareMethod(int x, int y)
{
bool result = x > y ? true : false;
return result;
}
}
class Program
{
static void Main(string[] args)
{
//实例化委托并初始化。注意初始化时候,必须包含一个方法的名称,而且这个方法必须符合最初定义委托时候的签名(参数类型和返回值)
CompareDelegate myDelegate = new CompareDelegate(MyCompare.CompareMethod);
//现在我们使用委托实例来比较两个数a和b的的大小
int a = 10;
int b = 15;
bool isBigger = myDelegate(a, b);
Console.WriteLine(" a > b ?: " + isBigger);
Console.Read();
}
}
应用在WinForm跨窗体执行函数
Form1.CompareDelegate myDelegate = new Form1.CompareDelegate(Form1.MyCompare.CompareMethod);
PS:Form1里面的CompareMethod函数可以不放在MyCompare类里面,那么上句代码就可以这样写:
Form1.CompareDelegate myDelegate = new Form1.CompareDelegate(Form1.CompareMethod);
public Action<String> ShowMessage;
public class1(form1 f1)
{
ShowMessage+=f1.showText;
}
public delegate void DelegateShow(string msg);定义委托
DelegateShow md = new DelegateShow(showText);
md ("显示信息");也可以用事件。