Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Добавление обработчика в цикле


Автор: BASSoft 19.1.2010, 21:51
Здравствуйте! Помогите мне, пожалуйста, решить одну проблемку. 

В программе открыто несколько окон (документов) и в каждом окне есть меню "открытые документы" которое содержит список всех открытых документов.  Проблема заключается в том, что после  добавления пунктам меню обработчков события "Click", все пункты меню ссылаются на одну форму (на ту которую я добавил самой последней / при последнем шаге цикла)

Как мне добавить каждому пункту меню оброботчик, ссылающийся на соответствующее ему окно?





List<ФормаДокумент>  СписокДокументов   -  все открытые формы приложения. 
ФормаДокумент - форма произошедшая от Form

Код


delegate void СобытиеОткрытьДокумент(object sender, EventArgs e);

. . . . . . . . . .

foreach (ФормаДокумент Документ in СписокДокументов)
            {
                MenuItem НовыйДокумент = new MenuItem();
                НовыйДокумент.Text = Документ.Text;
                СобытиеОткрытьДокумент ОткрытьДокумент = delegate(object sender2, EventArgs e2) 
                {
                    
                    Документ.Activate(); 
                };
                

                НовыйДокумент.Click += new EventHandler(ОткрытьДокумент);
                МенюОткрытыеДокументы.MenuItems.Add(НовыйДокумент);

            }         

. . . . . . . . . . .
                   

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)