我以编程方式创建菜单项并向其添加事件处理程序,由于某种原因,我似乎无法让每个菜单项的事件都注册其自己的唯一信息。例如:
for (int i = 0; i < this.Slideshow.Speeds.GetLength(0); i++)
{
MenuItem m = new MenuItem() { Header = this.Slideshow.Speeds[i, 0] };
//Set initial checked MenuItem
if (i == 3)
{
m.IsChecked = true;
}
m.Click += (s, e) => {
foreach (MenuItem m_ in this.slideshowSpeedMenuItem.Items)
{
m_.IsChecked = false;
}
m.IsChecked = true;
this.Slideshow.CurrentSpeed = (int)this.Slideshow.Speeds[i, 1];
//i is always the same. i SHOULD be getting a different entry in the array
MessageBox.Show(i.ToString());
};
this.slideshowSpeedMenuItem.Items.Add(m);
}
为什么每个菜单项的点击事件我总是一样的?我们的想法是让每个菜单项以不同的给定速度执行某些操作,如i。
所示