Мне нужно получить доступ к TabPage перед удалением TabControl

В основной программе я добавляю TabPage (UserControl) в TabControl. Этот элемент управления содержит мало данных, которые я хотел бы получить перед его удалением. При использовании TabControl.RemoveControl отправителем является TabControl, и я не могу получить доступ к TabPage, потому что я не знаю, какой именно (используя TabControl.TabPages.Count, я знаю, что моя вкладка еще не удалена, поэтому я могу получить к ней доступ).

Есть ли какое-либо событие для TabControl, чтобы отметить TabPage, который будет удален? или любая другая идея.

В основном: я добавляю вкладку с редактированием некоторых данных MySql, и после закрытия я хотел бы проверить, было ли в этой строке Edit (через bool wasEdited), и если бы он был отредактирован, я бы хотел прочитать идентификатор этой строки. Если бы форма для редактирования не была в отдельном файле, я бы просто запустил метод для этого, и я не могу использовать статический метод для доступа к нестатическому DataGridView для обновления строки.


person Michal Sapsa    schedule 22.08.2013    source источник
comment
покажи свой код пожалуйста   -  person MikroDel    schedule 22.08.2013
comment
@MikroDel, я согласен с тем, что обычно люди должны показывать свой код, но OP написал, что он пробовал и где у него проблемы. Я сомневаюсь, что в этом случае образец кода что-то изменит.   -  person Lars Kristensen    schedule 22.08.2013
comment
@LarsKristensen, да, это зависит от обстоятельств. Для большинства людей лучшая комбинация, чтобы понять вопрос, - это текст + код.   -  person MikroDel    schedule 22.08.2013


Ответы (1)


в обработчике событий TabControl.ControlRemoved у вас есть ControlEventArgs e. Удаляемый элемент управления - e.Control.

person Arie    schedule 22.08.2013
comment
Да, я понял, но вы на 100% правы, к сожалению, я не обновил эту страницу, прежде чем разобраться. Мне удалось сделать этот код: ((MY_User_Control) (((TabControl) sender) .TabPages [e.Control.Name] .Controls [0])). WasEdited таким образом, я проверяю, что я хочу :-) Большое спасибо - person Michal Sapsa; 22.08.2013
comment
@ MichałPółrolniczak, вы получаете TabPage из коллекции TabControl.TabPages, используя имя фактической TabPage, которое вы получаете от e.Control. В этом нет ничего плохого, но это немного избыточно. Вы можете просто сделать: ((MY_User_Control) ((TabPage) e.Control) .Controls [0]). WasEdited - person Lars Kristensen; 22.08.2013
comment
@LarsKristensen, я читал, что в Event Triger sender - это объект, который запускает событие, а EventArgs (e) - это только промежуточные данные - я не знал, что данные могут быть объектом, в данном случае TabPage. Ваш код работал. В этом случае e на самом деле является ОБЪЕКТОМ, который удаляется из Parent, который является отправителем, спасибо, что мой код действительно избыточен :-) Спасибо, что заставил меня кое-что узнать сегодня :-) - person Michal Sapsa; 23.08.2013
comment
@ MichałPółrolniczak, без проблем - рад помочь :) Практическое правило, которое я обычно использую; Если EventArgs - это что-то иное, чем просто EventArgs, то обычно в аргументах есть что-то полезное. В вашем случае ControlEventArgs содержал именно то, что вам нужно. - person Lars Kristensen; 23.08.2013