| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > ToolStripMenuItem - динамический хендлер |
| Автор: infarch 22.8.2011, 14:02 | ||
Возникла необходимость добавлять элементы меню динамически. Суть их однотипная, в хендлер должен передаваться объект на основе которого был создан этот элемент. Делаю я это вот так:
И вот проблема: при любом пункте меню хендлер (LoadProject) получает объект ассоциированный с последним пунктом. Может кто подскажет как можно решить проблему? PS. Было бы вообще круто задействовать binding на список, только вот похоже для DropDownItems binding не предусмотрен. Или я ошибаюсь?.. |
| Автор: Fortnox 23.8.2011, 01:15 | ||
Используйте локальную переменную:
Почему так, это называется замыкание, читайте тут - http://blogs.msdn.com/b/abhinaba/archive/2005/10/18/482180.aspx (и на хабре вроде было про это) |
| Автор: infarch 23.8.2011, 09:42 |
| Блин, вроде тоже самое а такая разница... Спасибо! Правда я уже по другому решил: назначил каждому элементу меню соответствующий Project в Tag и сделал общий хендлер: projectOpenMenu.DropDownItemClicked. А там: Project p = e.ClickedItem.Tag as Project; LoadProject(p); Однако ваше решение обязательно возьму на заметку. |