If a Tick-handling function will only be used in one context (i.e. always in the same function in combination with the same Timer object), why bother make it a separate function
You use the delegate
keyword for anonymous methods:
Timer myTimer = new Timer();
myTimer.Tick += delegate(object sender, EventArgs e) {
MessageBox.Show("Hello world!");
};
In C# 3.0 and later, you can also use lambdas:
Timer myTimer = new Timer();
myTimer.Tick += (sender, e) => MessageBox.Show("Hello world!");
You're looking for Anonymous Methods:
myTimer.Tick += delegate (object sender, EventArgs e) {
MessageBox.Show("Hello world!");
};
You can also omit the parameters:
myTimer.Tick += delegate {
MessageBox.Show("Hello world!");
};
In C# 3.0, you can also use a Lambda Expression:
myTimer.Tick += (sender, e) => {
MessageBox.Show("Hello world!");
};
A complete example would be:
Timer timer = new Timer();
timer.Interval = 500;
timer.Tick += (t, args) =>
{
timer.Enabled = false;
/* some code */
};
timer.Enabled = true;