Выдача события из пользовательского элемента управления динамически добавляется в форму - PullRequest
1 голос
/ 29 марта 2012

У меня есть пользовательский элемент управления, который можно добавить несколько раз в форму.В одной и той же форме может быть несколько вхождений этого пользовательского элемента управления.Эти элементы управления добавляются и удаляются пользователем.Пользователь может щелкнуть правой кнопкой мыши по некоторому элементу управления внутри пользовательского элемента управления, чтобы открыть меню.

При выборе элемента из этого меню в форме должно быть инициировано событие.Я создал собственное событие и понял, что его нельзя будет использовать, если элемент управления был добавлен динамически, потому что форма его не знает.Я не могу добавить обработчик событий, ссылающийся на элемент управления, который не существует.Есть ли другой способ вызвать событие в форме из пользовательского элемента управления, который не требует, чтобы форма знала это?Кстати, мои пользовательские элементы управления добавляются в FlowLayoutPanel.Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Вы просто подключаете обработчик событий в коде, когда добавляете элемент управления, например,

MyButton.Click += ButonClickEventHandler;
Page.Controls.Add(MyButton)
0 голосов
/ 29 марта 2012

Согласитесь с Беном - в противном случае есть грязные способы сделать это (в зависимости от того, как настроен ваш контроль).Например, INotifyPropertChanged Inerface или с помощью обмена сообщениями Windows API (и слушателя) - но, если у вас нет очень странной настройки, тогда, как сказал Бен, просто добавьте обработчик при добавлении элемента управления.Вы всегда можете использовать универсальный метод обратного вызова и использовать собственные аргументы событий, чтобы определить, кто его вызвал.

...