2011-04-26 79 views
7

Tengo un control de tabulación en un formulario de Windows y quiero poder hacer clic en una pestaña y en el área del cuerpo de la pestaña quiero que se muestre otro formulario como un incrustado componente a ella. es posible? si es así, ¿puede alguien proporcionar un ejemplo o un enlace a un ejemplo de cómo lograr esto?Incrustar un formulario en un tabcontrol en formularios de Windows

Gracias

+1

¿Se puede mover * otras * contenido del formulario a control de usuario y control de usuario embed ¿en lugar? –

+0

¿Cuán difícil crees que sería mover 43 formularios a controles de usuario? o más bien, ¿qué tan fácil sería mover los formularios a los controles del usuario? – MBU

+1

Cualquier cosa que varíe de * trivial * a * imposible * dependiendo de cuánto sus formularios son solo formularios, o formularios con lógica de dominio mezclada aquí y allá :) –

Respuesta

8

Usted probablemente está buscando Tabbed MDI Child Forms

+0

¿Conoce algún otro ejemplo? Ese no explica cómo funciona todo muy bien. – MBU

+1

Esta es la respuesta correcta real, ese enlace muestra todo cómo hacer que funcione. Lo probé y funciona como un encanto. –

2

Si no desea utilizar MDI, se puede tratar de poner todo de forma deseada para el control del usuario y añadir este control de usuario en la forma y la pestaña .

4

Creo que la otra respuesta tiene la idea correcta; El MDI con pestañas es probablemente lo que quieres.

Hay un enfoque donde se crea un UserControl que tiene el mismo contenido que el formulario y se usa en el TabPage.

TabPage myTabPage = new TabPage(sometext); 
myUserControl = new myUserControlType(); 
myUserControl.Dock = DockStyle.Fill; 
myTabPage.Controls.Add(myUserControl); 
myTabControl.Add(myTabPage); 

http://bytes.com/topic/c-sharp/answers/270457-can-i-add-form-tabpage entra en más detalles; pero primero vería las cosas de MDI.

7

Puede incrustar un formulario, pero no es la mejor opción.

Mejor coloque el contenido en UserControls y agréguelo a TabPage.

4

Establezca su MainForm (principal) como IsMDIContainer = true;

Crear una instancia de la ChildForm y llamar a esta función:

FormChild frmChild = new FormChild(); 
AddNewTab(frmChild); 

Copiar esta función para su código:

private void AddNewTab(Form frm) 
{ 

    TabPage tab = new TabPage(frm.Text); 

    frm.TopLevel = false; 

    frm.Parent = tab; 

    frm.Visible = true; 

    tabControl.TabPages.Add(tab); 

    frm.Location = new Point((tab.Width - frm.Width)/2, (tab.Height - frm.Height)/2); 

    tabControl.SelectedTab = tab; 

} 
+1

Eliminé frm.Location y agregué WindowState = Maximized y FormBorderStyle = None. Funcionó a la perfección! – NTDLS

+0

Phew - ayudó mucho - gracias. – earthling42

Cuestiones relacionadas