C#将回调传递给按钮

C#将回调传递给按钮,c#,xna,C#,Xna,在Javascript或Flash中,我习惯于将回调传递给我的按钮对象,如下所示: 主类 function init() { var myButton = new Button("red", doSomething); } function doSomething() { log("someone clicked our button, but who?"); } 按钮类构造函数 function Button(color, callback) { addListene

在Javascript或Flash中,我习惯于将回调传递给我的按钮对象,如下所示:

主类

function init() {
   var myButton = new Button("red", doSomething);
}
function doSomething() {
    log("someone clicked our button, but who?");
}
按钮类构造函数

function Button(color, callback) {
     addListener(mouseClick, callback);
}
这个例子大大简化了,关键是可以将函数名作为参数传递给Button实例。单击按钮后,该按钮将调用该函数

这在C#中可能吗?我读过一些关于代表的内容,但找不出一个简单的例子。

很简单:

//Declare the function "interface"
delegate string UppercaseDelegate(string input);
//Declare the function to be passed
static string UppercaseAll(string input)
{
return input.ToUpper();
}
//Declare the methode the accepts the delegate
static void WriteOutput(string input, UppercaseDelegate del)
{
    Console.WriteLine("Before: {0}", input);
    Console.WriteLine("After: {0}", del(input));
}

static void Main()
{
WriteOutput("test sentence", new UppercaseDelegate(UppercaseAll));
}

似乎没有办法在WinForms中使用Button类在构造函数中分配回调。但作为第二步,这相当容易:

Button myButton = new Button("Text Displayed");
myButton.Click += (sender, args) => SomeFunction();