2010-03-24 31 views
5

Estoy construyendo un formulario C# pequeño y me gustaría que cada página con algunas características comunes, notablemente, un botón Aceptar y un mensaje de error y tener un espacio para el específico campos de formulario.Creando un control TabPage personalizado en C#

¿Alguien más ha hecho algo similar y cómo lo ha abordado?

+0

¿Un botón Aceptar en cada página? –

+1

no es la respuesta correcta, pero creo que haré una prueba ampliando el tabcontrolpage original, agregando las funciones comunes que necesita – michele

Respuesta

7

Esto es fácil de hacer sin extender TabControl/TabPage.

Defina un UserControl y coloque los elementos comunes que desee en cada TabPage.

En el formulario: siga adelante y diseñe los controles específicos de TabPage que desee para cada TabPage: asegúrese de que no se superpongan visualmente con los controles comunes una vez que se haya agregado el UserControl.

En el evento Form Load del Formulario principal de hacer algo como esto:

// form scoped variable to hold a referece to the current UserControl 
    private UserControl1 currentUserControl; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach(TabPage theTabPage in tabControl1.TabPages) 
     { 
      currentUserControl = new UserControl1(); 

      theTabPage.Margin = new Padding(0); 
      theTabPage.Padding = new Padding(0); 

      theTabPage.Controls.Add(currentUserControl); 

      currentUserControl.Location = new Point(0,0); 

      currentUserControl.Dock = DockStyle.Fill; 

      currentUserControl.SendToBack(); 
     } 
    } 

A pesar de que la 'SendToBack no es realmente necesario aquí está 'seguro' de que el control de usuario con el' botón Aceptar y TextBox para un mensaje de error se colocan detrás de los controles individuales que ha asignado a cada TabPage.

+1

Aquellos de ustedes que votaron negativamente: comprender que no les gusta esta solución sería muy apreciada. gracias, – BillW

+0

@BillW En realidad, algunos asnos marcaron esto como spam. Ahora, no sé si esta es una buena respuesta, pero sé que no es spam. Entonces, +1 para ayudar a compensar la pérdida de reputación y neutralizar el rango de la respuesta. –

+0

Hola BillW, Me gusta esta solución. Sé que significa que pierdo el apoyo del diseñador en términos de "ver" el control, pero creo que hace el trabajo bien, gracias. –

2

varias ideas:

  • mantener a los controles comunes fuera de la TabPanel;
  • Amplíe TabPage/TabControl
  • Cree un UserControl base con los botones comunes y haga los controles de usuario que heredan de él. A continuación, coloque un control de usuario heredado por TabPage.
Cuestiones relacionadas