2013-08-22 4 views
0

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

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

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

+0

показать свой код – MikroDel

+0

@MikroDel, я согласен, что обычно люди должны показывать свой код, но ОП написал то, что он пытался, и где у него проблемы. Я сомневаюсь, что образец кода будет иметь какое-то значение в этом случае. –

+0

@LarsKristensen да, это зависит. Для большинства людей лучшая комбинация, чтобы не поддаваться сомнению, это текст + код – MikroDel

ответ

1

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

+0

Да, я понимаю, но вы на 100% правильны, к сожалению, я не обновлял эту страницу, прежде чем выяснять ее. Мне удалось сделать этот код: ((MY_User_Control) (((TabControl) отправитель) .TabPages [e.Control.Name] .Controls [0])). WasEdited таким образом, я проверяю, что хочу :-) Спасибо большое –

+0

@ MichałPółrolniczak, вы извлекаете TabPage из коллекции TabControl.TabPages, используя имя фактического TabPage, которое вы получаете от e.Control. Это не так, но это немного лишнее. Вы можете просто сделать: ((MY_User_Control) ((TabPage) e.Control) .Controls [0]). WasEdited –

+0

@LarsKristensen, я прочитал, что в событии Triger отправитель является объектом, запускающим событие, и EventArgs (e) является только passthough data - я не знал, что данные могут быть объектом, в данном случае TabPage. Ваш код работал. В этом случае e является актуальным ОБЪЕКТОМ, который удаляется из родителя, который является отправителем, благодаря моему коду действительно избыточно :-) Спасибо, что заставляли меня чему-то научиться сегодня :-) –

Смежные вопросы