So müsste es funktionieren. Dann wird für jeden Schleifendurchlauf eine neue id erstellt. Bei den anonymen Methoden ist wichtig wo die Variable deklariert wurde.
Code:
foreach MyObject Element in Liste
{
Erstelle neuen Menüeintrag mit Element.Name;
int id=Element.Id;
Neuer Menüeintrag.OnClick = new Eventhandler(
delegate(object sender, EventArgs e)
{
MessageBox.Show(id);
}
);
}