elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?  (Leído 10,162 veces)
Crazy.sx


Desconectado Desconectado

Mensajes: 447



Ver Perfil
¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?
« en: 23 Octubre 2012, 23:52 pm »

Tengo en VB.NET 2010 un TabControl con una pestaña que contiene un DataGridView y dos botones en los que cada uno posee un procedimiento definido.

Mi dilema  :-\ es cómo crear otra o varias pestañas u otros TabPage con exactamente el mismo contenido que la anterior y funcionamiento; y después eliminar las pestañas que yo desee sin causar ningún error en las otras.

Es un problema que no se bien como lo supero, je. Leí en otros sitios sobre crear controles en tiempo de ejecución pero quiero hacer la pregunta directa. Según entendí se trata de crear varias instancias ¿Es así?

Por favor, espero que me puedan guiar ya que vengo luchando con esto desde hace un tiempo.  :(

Gracias.


« Última modificación: 23 Octubre 2012, 23:54 pm por Lucas.AR » En línea

Destruir K. LOL
TomaSs

Desconectado Desconectado

Mensajes: 101



Ver Perfil
Re: ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?
« Respuesta #1 en: 24 Octubre 2012, 00:26 am »

Así es, creando controles dinámicamente podrías hacerlo sin ningún problema.
Ejemplo:

        
Código
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3.        TabPage miPagina = new TabPage();
  4.        Button miBoton = new Button();
  5.  
  6.        miPagina.Text = "PruebaPestaña";
  7.        miPagina.Name = "paginaPrueba";
  8.  
  9.        miBoton.Text = "PruebaBoton";
  10.        miBoton.Name = "button2";
  11.        miBoton.Location = new Point(20, 20);
  12.  
  13.        miPagina.Controls.Add(miBoton);
  14.        tabControl1.TabPages.Add(miPagina);
  15. }

Simplemente he creado un formulario al cual he añadido un tabcontrol (tabControl1) y un boton (button1), y cuando pulsas en dicho boton se ejecuta el código que te he puesto, donde he declarado 2 objetos, uno de TabPage, que será la página que vas a añadir, y otro de tipo Button, que será el botón que vas a añadir a la página. Después de declarar dichos objetos, les asigno las propiedades que quiera (en este caso Text, Name y Location) y los añado a sus correspondientes lugares con miPagina.Controls.Add(miBoton) para añadir el botón a la página creada, y con tabControl1.TabPages.Add(miPagina) para añadir la página creada al tabControl.

Espero que te sea de ayuda.
Un saludo! ;)


En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?
« Respuesta #2 en: 24 Octubre 2012, 00:35 am »

bueno crear el TabPage es facil y meterle controles adentro tambien, aca un ejemplo simple que tambein maneja los eventos de cada control en cada tab.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Call CrearTab()
  5.    End Sub
  6.  
  7.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  8.        TabControl1.TabPages.Remove(TabControl1.SelectedTab)
  9.    End Sub
  10.  
  11.    Private Sub CrearTab()
  12.        Dim NewTab As New TabPage
  13.        NewTab.Name = "Tab" & TabControl1.TabCount
  14.        NewTab.Text = "Tab " & TabControl1.TabCount
  15.  
  16.        Me.TabControl1.Controls.Add(NewTab)
  17.  
  18.        Dim NewButton As New Button
  19.        NewButton.Name = "Button1"
  20.        NewButton.Top = 10
  21.        NewButton.Text = "Boton 1"
  22.        NewTab.Controls.Add(NewButton)
  23.  
  24.        AddHandler NewButton.Click, AddressOf ClickBotones
  25.  
  26.        Dim NewButton2 As New Button
  27.        NewButton2.Name = "Button2"
  28.        NewButton2.Top = 100
  29.        NewButton2.Text = "Boton 2"
  30.        NewTab.Controls.Add(NewButton2)
  31.  
  32.        AddHandler NewButton2.Click, AddressOf ClickBotones
  33.    End Sub
  34.  
  35.    Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs)
  36.        Dim whichButton As Button
  37.        Dim whichTabPage As Control
  38.  
  39.        If TypeOf sender Is Button Then
  40.  
  41.            whichButton = CType(sender, Button)
  42.            whichTabPage = whichButton.Parent
  43.  
  44.            MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name)
  45.        End If
  46.    End Sub
  47. End Class

el primer boton añade un tab con 2 botones adentro y el otro elimina la tab seleccionada.

tambien se manejan los eventos click de cada boton y se sabe de que tab vino el click.

es un simple ejemplo, lo tenes que optimizar.

saludos.
« Última modificación: 24 Octubre 2012, 00:36 am por seba123neo » En línea

spiritdead

Desconectado Desconectado

Mensajes: 296


Ver Perfil
Re: ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?
« Respuesta #3 en: 24 Octubre 2012, 00:54 am »

bueno crear el TabPage es facil y meterle controles adentro tambien, aca un ejemplo simple que tambein maneja los eventos de cada control en cada tab.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Call CrearTab()
  5.    End Sub
  6.  
  7.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  8.        TabControl1.TabPages.Remove(TabControl1.SelectedTab)
  9.    End Sub
  10.  
  11.    Private Sub CrearTab()
  12.        Dim NewTab As New TabPage
  13.        NewTab.Name = "Tab" & TabControl1.TabCount
  14.        NewTab.Text = "Tab " & TabControl1.TabCount
  15.  
  16.        Me.TabControl1.Controls.Add(NewTab)
  17.  
  18.        Dim NewButton As New Button
  19.        NewButton.Name = "Button1"
  20.        NewButton.Top = 10
  21.        NewButton.Text = "Boton 1"
  22.        NewTab.Controls.Add(NewButton)
  23.  
  24.        AddHandler NewButton.Click, AddressOf ClickBotones
  25.  
  26.        Dim NewButton2 As New Button
  27.        NewButton2.Name = "Button2"
  28.        NewButton2.Top = 100
  29.        NewButton2.Text = "Boton 2"
  30.        NewTab.Controls.Add(NewButton2)
  31.  
  32.        AddHandler NewButton2.Click, AddressOf ClickBotones
  33.    End Sub
  34.  
  35.    Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs)
  36.        Dim whichButton As Button
  37.        Dim whichTabPage As Control
  38.  
  39.        If TypeOf sender Is Button Then
  40.  
  41.            whichButton = CType(sender, Button)
  42.            whichTabPage = whichButton.Parent
  43.  
  44.            MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name)
  45.        End If
  46.    End Sub
  47. End Class

el primer boton añade un tab con 2 botones adentro y el otro elimina la tab seleccionada.

tambien se manejan los eventos click de cada boton y se sabe de que tab vino el click.

es un simple ejemplo, lo tenes que optimizar.

saludos.

xD pero ahi ya estas aumentando el nivel con la incorporacion de eventos controlados, :P xD no lo enreden =(
AddHandler NewButton2.Click, AddressOf ClickBotones

xD primero que aprenda a crear los controles dinamicamente, y despues como asignarle los eventos correctamente sino se perdera
En línea

Facilitador De Tareas - Task Simplifier (FDT)
Crazy.sx


Desconectado Desconectado

Mensajes: 447



Ver Perfil
Re: ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?
« Respuesta #4 en: 24 Octubre 2012, 02:44 am »

bueno crear el TabPage es facil y meterle controles adentro tambien, aca un ejemplo simple que tambein maneja los eventos de cada control en cada tab.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Call CrearTab()
  5.    End Sub
  6.  
  7.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  8.        TabControl1.TabPages.Remove(TabControl1.SelectedTab)
  9.    End Sub
  10.  
  11.    Private Sub CrearTab()
  12.        Dim NewTab As New TabPage
  13.        NewTab.Name = "Tab" & TabControl1.TabCount
  14.        NewTab.Text = "Tab " & TabControl1.TabCount
  15.  
  16.        Me.TabControl1.Controls.Add(NewTab)
  17.  
  18.        Dim NewButton As New Button
  19.        NewButton.Name = "Button1"
  20.        NewButton.Top = 10
  21.        NewButton.Text = "Boton 1"
  22.        NewTab.Controls.Add(NewButton)
  23.  
  24.        AddHandler NewButton.Click, AddressOf ClickBotones
  25.  
  26.        Dim NewButton2 As New Button
  27.        NewButton2.Name = "Button2"
  28.        NewButton2.Top = 100
  29.        NewButton2.Text = "Boton 2"
  30.        NewTab.Controls.Add(NewButton2)
  31.  
  32.        AddHandler NewButton2.Click, AddressOf ClickBotones
  33.    End Sub
  34.  
  35.    Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs)
  36.        Dim whichButton As Button
  37.        Dim whichTabPage As Control
  38.  
  39.        If TypeOf sender Is Button Then
  40.  
  41.            whichButton = CType(sender, Button)
  42.            whichTabPage = whichButton.Parent
  43.  
  44.            MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name)
  45.        End If
  46.    End Sub
  47. End Class

el primer boton añade un tab con 2 botones adentro y el otro elimina la tab seleccionada.

tambien se manejan los eventos click de cada boton y se sabe de que tab vino el click.

es un simple ejemplo, lo tenes que optimizar.

saludos.


xD pero ahi ya estas aumentando el nivel con la incorporacion de eventos controlados, :P xD no lo enreden =(
AddHandler NewButton2.Click, AddressOf ClickBotones

xD primero que aprenda a crear los controles dinamicamente, y despues como asignarle los eventos correctamente sino se perdera

Jeje. Bueno, sí. La verdad que me pegué un susto al ver el código porque soy algo nuevo en esto, pero me puse a leerlo e intentar comprenderlo y no parece tanto kilombo después de todo. Aunque es la primera vez que leo algo en .NET como AddHandler y AddressOf.

Acabo de leer acerca de estos y veo que van de la mano: http://msdn.microsoft.com/es-es/library/7taxzxka(v=vs.80).aspx

Y me quedó mas que claro esta cuestión.

Así que muchas gracias por abrirme la cabeza,  ;) ;-)

Solo una cosita más, aunque suene obvia... si quisiera hacer que el nuevo TabPage quede exactamente igual que la "pestaña modelo" (por decirlo de alguna manera) debo especificar exactamente las mismas y todas propiedades de aquellos controles ¿verdad? Como me pusiste vos Seba en el ejemplo que me pasaste:

  
Código
  1.     NewButton2.Name = "Button2"
  2.        NewButton2.Top = 100
  3.        NewButton2.Text = "Boton 2"
  4.                      ·
  5.                      ·
  6.                      ·
  7.        NewButton2.[···]= [···]

 :huh:

¿Uno por uno a todos? ¿Se podría copiar directamente todas las propiedades de una vez?

Muchas gracias.

Saludos.
« Última modificación: 24 Octubre 2012, 06:19 am por Lucas.AR » En línea

Destruir K. LOL
seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes?
« Respuesta #5 en: 24 Octubre 2012, 17:13 pm »

podes hacer un bucle For, algo asi:

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Call CrearTabModelo()
  5.    End Sub
  6.  
  7.    Private Sub CrearTabModelo()
  8.        Dim NewTab As New TabPage
  9.        NewTab.Name = "Tab" & TabControl1.TabCount
  10.        NewTab.Text = "Tab " & TabControl1.TabCount
  11.  
  12.        Me.TabControl1.Controls.Add(NewTab)
  13.  
  14.        For i As Integer = 1 To 10
  15.            Dim NewButton As New Button
  16.            NewButton.Name = "Button" & i
  17.            NewButton.Text = "Boton " & i
  18.            NewButton.Location = New Point(10, 25 * i)
  19.            NewTab.Controls.Add(NewButton)
  20.  
  21.            AddHandler NewButton.Click, AddressOf ClickBotones
  22.        Next
  23.    End Sub
  24.  
  25.    Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs)
  26.        Dim whichButton As Button
  27.        Dim whichTabPage As Control
  28.  
  29.        If TypeOf sender Is Button Then
  30.  
  31.            whichButton = CType(sender, Button)
  32.            whichTabPage = whichButton.Parent
  33.  
  34.            MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name)
  35.        End If
  36.    End Sub
  37. End Class
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Agregar controles en tiempo de ejecucion
Programación Visual Basic
Garrido_jesus20 6 2,961 Último mensaje 29 Marzo 2006, 21:57 pm
por Garrido_jesus20
[Aporte]Crear controles en tiempo de Ejecución
Programación Visual Basic
Freeze. 0 2,296 Último mensaje 11 Julio 2007, 15:27 pm
por Freeze.
Crear Controles En tiempo de ejecucion c# y gaurdalos « 1 2 »
.NET (C#, VB.NET, ASP)
mr_marley 13 17,382 Último mensaje 24 Septiembre 2020, 08:18 am
por YouMash
¿Como crear imagenes en tiempo de ejecucion?
.NET (C#, VB.NET, ASP)
Brian1511 2 2,237 Último mensaje 5 Diciembre 2012, 18:17 pm
por Brian1511
crear controles en tiempo de ejecucion
.NET (C#, VB.NET, ASP)
d91 6 7,705 Último mensaje 20 Diciembre 2015, 23:03 pm
por mOrfiUs0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines