Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: _CrisiS_ en 13 Diciembre 2017, 13:46 pm



Título: Boton que agregue TabPages a un TabControl
Publicado por: _CrisiS_ en 13 Diciembre 2017, 13:46 pm
Hola, tengo una consulta tengo un TabControl con 3 Pestañas "TabPages" mi duda es por medio de un boton agregar mas pestañas o TabPages, con el contenido (textbox, labels ,botones, etc) claro que cambiando el nombre a los controladores ejemplo "el textbox1 del TabPage 1 al  generarse el nuevo tabPage "que cambie su nombre a "textbox1" o "textbox1_2" y t un boton para eliminar TabPages.


Título: Re: Boton que agregue TabPages a un TabControl
Publicado por: Eleкtro en 13 Diciembre 2017, 14:36 pm
claro que cambiando el nombre a los controladores ejemplo "el textbox1 del TabPage 1 al  generarse el nuevo tabPage "que cambie su nombre a "textbox1" o "textbox1_2" y t un boton para eliminar TabPages.

Has dicho "controladores", pero en realidad creo que te debes estar refiriendo al nombre de los controles más que al nombre de los controladores de eventos que tengas declarados en el código.



En principio a menos que des más detalles no parece existir necesidad real de crear los controles en tiempo de ejecución y querer modificarle el nombre para evitar conflicto de nombres etc, y como parece que tu intención es la de replicar el contenido de una pestaña a otra, los mismos controles (las nuevas copias) pueden estar suscritos (todos) a un único controlador de eventos, no necesitas repetir código más de lo realmente necesario...

Simplemente añade un nuevo Form (sin borde) en tu proyecto (click derecho -> "Add" -> "Windows Form..."), añádele los controles que quieras, distribuye la posición de los controles y ponle los nombres que quieras, y declara los controladores de eventos en la clase de ese Form, luego para añadir una nueva pestaña en tiempo de ejecución y añadir dentro de esa pestaña una "copia" de ese Form, simplemente debes crear una nueva instancia del Form (en este caso supongamos que el Form se llama "MyCustomForm"), por ejemplo:

Código
  1. Dim page1 As New TabPage("new tab page 1")
  2. Dim childForm1 As New MyCustomForm With {
  3.    .Dock = DockStyle.Fill,
  4.    .FormBorderStyle = FormBorderStyle.None,
  5.    .TopLevel = False,
  6.    .Visible = True,
  7.    .Parent = page1
  8. }
  9.  
  10. Dim page2 As New TabPage("new tab page 2")
  11. Dim childForm2 As New MyCustomForm With {
  12.    .Dock = DockStyle.Fill,
  13.    .FormBorderStyle = FormBorderStyle.None,
  14.    .TopLevel = False,
  15.    .Visible = True,
  16.    .Parent = page2
  17. }
  18.  
  19. TabControl1.TabPages.AddRange({page1, page2})

( De ese ejemplo que acabo de poner puedes crear un sencillo método reutilizable para evitar la repetición de código. )

...La otra opción alternativa a esta metodología, sería directamente añadir los controles y posicionarlos en tiempo de ejecución dentro de la pestaña (el contenedor de controles) mediante el método TabControl.TabPages(index).Controls.Add(), pero no hay necesidad real de hacerlo así cuando puedes crear un Form en tiempo de diseño para administrar su aspecto y todo lo demás de mejor manera, y así evitar la generación de código engorroso que implica crear y liberar controles y administrar sus nombres y las posiciones y todo lo demás en tiempo de ejecución mediante código... pero bueno, la decisión es tuya, hazlo como prefieras solo era un consejo.

Saludos


Título: Re: Boton que agregue TabPages a un TabControl
Publicado por: _CrisiS_ en 13 Diciembre 2017, 22:21 pm
Vaya gracias pro la ayuda, solo la duda, al hacer siempre ese llamado a ese Sub Form,  como haria para no tener problemas al momento de guardar los registro a la BD.
Por otro lado como pondria el contador para que cada pestaña nueva sume " Pestaña2,Pestaña,3Pestaña4....Pestaña n"
 gracias :D


Título: Re: Boton que agregue TabPages a un TabControl
Publicado por: **Aincrad** en 17 Diciembre 2017, 17:54 pm
Si entendí bien seria así (pestaña 1 - pestaña 2 - pestaña 3 ...):

1) crea un TabControl sin pestañas
2) crea un boton


código del FORMULARIO :

Código
  1. Public Class Form1
  2.    Dim cont As Integer = 0
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Dim tabpage As New TabPage
  5.        cont = cont + 1
  6.        tabpage.Text = "Pestaña" & cont
  7.        TabControl1.TabPages.Add(tabpage)
  8.  
  9.    End Sub
  10. End Class

________________________________________________________________________________________________________________________________________

si quieres agregarles controles como ( botones - textbox - etc ) :

1) crea un TabControl sin pestañas
2) crea un botón.

código del FORMULARIO :

Código
  1. Public Class Form1
  2.    Dim cont As Integer = 0
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Dim tabpage As New TabPage
  5.        cont = cont + 1
  6.        tabpage.Text = "Pestaña" & cont
  7.        Dim textbox1 As New TextBox
  8.        Dim textbox2 As New TextBox
  9.  
  10.        textbox1.Parent = tabpage
  11.        textbox2.Parent = tabpage
  12.  
  13.        textbox1.Location = New Point(10, 10)
  14.        textbox2.Location = New Point(10, 30)
  15.  
  16.        TabControl1.TabPages.Add(tabpage)
  17.  
  18.    End Sub
  19. End Class


                                 COMENTA SI TE SIRVIO  ;-)