Лучший отвечающий
При закрытие MDI формы, удалить TabPage из главной формы

Вопрос
-
Всем привет. При нажатии кнопки добавляется новое TabPage в Tabcontrol, и на него MDI форма. Но не могу удалить вкладку при закрытии формы MDI. Все варианты перепробовал.
Вот так из главной формы добавляю новую форму(mdi) в табконтрол
TabPage tb = new TabPage(); tb.Name = mdi.RDP_client1.Server.ToString(); tb.Text = mdi.RDP_client1.Server.ToString(); tabControl2.TabPages.Add(tb); mdi.Name = tb.Name; mdi.Text = tb.Text; mdi.TopLevel = false; tb.Controls.Add(mdi); mdi.Show();
А так, если закрыть mdi форму, то должно удалится tabpage
private void MDIParent1_FormClosing(object sender, FormClosingEventArgs e) { RDP_client1.Disconnect(); while (RDP_client1.Connected != 0) { System.Threading.Thread.Sleep(1000); Application.DoEvents(); } Form1 _form1 = new Form1(); MessageBox.Show("Tab Pages: " + _form1.tabControl2.TabCount.ToString()); //_form1.tabControl2.TabPages[this.Name].Dispose(); _form1.tabControl2.TabPages.RemoveByKey(this.Name); }
6 марта 2014 г. 11:29
Ответы
-
Как я понял, Form1 - это главная форма приложения. Посмотрите вот на этот фрагмент Вашего кода:
Form1 _form1 = new Form1(); _form1.tabControl2.TabPages.RemoveByKey(this.Name);
Как Вы думаете, с каким экземпляром главной формы Вы пытаетесь взаимодействовать? Думаю, с тем, который понятия не имеет о добавленных ранее закладках в TabControl. Вы, вообще, понимаете действие операции new?
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Изменено kosuke904 6 марта 2014 г. 19:28
- Предложено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 7 марта 2014 г. 6:41
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 10 марта 2014 г. 13:36
6 марта 2014 г. 19:27 -
tabpage отдельный объект, не относится к tabControl, но используется в нем. лучше было бы если этот tabPage не удалять, а прятать, тогда вы сможете его заново показывать без изменении на поверхности. через Visible/Visibility
- Предложено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 7 марта 2014 г. 6:41
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 10 марта 2014 г. 13:36
6 марта 2014 г. 14:16 -
У любого элемента управления есть свойство Parent. Попробуйте "пройти" по стеку родителей Вашего элемента, пока не дойдёте до главной формы. Так получите нужный объект и используйте его как Вам нужно.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 10 марта 2014 г. 13:36
7 марта 2014 г. 14:05
Все ответы
-
tabpage отдельный объект, не относится к tabControl, но используется в нем. лучше было бы если этот tabPage не удалять, а прятать, тогда вы сможете его заново показывать без изменении на поверхности. через Visible/Visibility
- Предложено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 7 марта 2014 г. 6:41
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 10 марта 2014 г. 13:36
6 марта 2014 г. 14:16 -
как прятать, если я не могу достучатся до этого элемента6 марта 2014 г. 17:18
-
Как я понял, Form1 - это главная форма приложения. Посмотрите вот на этот фрагмент Вашего кода:
Form1 _form1 = new Form1(); _form1.tabControl2.TabPages.RemoveByKey(this.Name);
Как Вы думаете, с каким экземпляром главной формы Вы пытаетесь взаимодействовать? Думаю, с тем, который понятия не имеет о добавленных ранее закладках в TabControl. Вы, вообще, понимаете действие операции new?
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Изменено kosuke904 6 марта 2014 г. 19:28
- Предложено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 7 марта 2014 г. 6:41
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 10 марта 2014 г. 13:36
6 марта 2014 г. 19:27 -
как прятать, если я не могу достучатся до этого элемента
используйте слово this7 марта 2014 г. 3:34 -
Как я понял, Form1 - это главная форма приложения. Посмотрите вот на этот фрагмент Вашего кода:
Form1 _form1 = new Form1(); _form1.tabControl2.TabPages.RemoveByKey(this.Name);
Как Вы думаете, с каким экземпляром главной формы Вы пытаетесь взаимодействовать? Думаю, с тем, который понятия не имеет о добавленных ранее закладках в TabControl. Вы, вообще, понимаете действие операции new?
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
7 марта 2014 г. 6:17 -
У любого элемента управления есть свойство Parent. Попробуйте "пройти" по стеку родителей Вашего элемента, пока не дойдёте до главной формы. Так получите нужный объект и используйте его как Вам нужно.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 10 марта 2014 г. 13:36
7 марта 2014 г. 14:05