Autor
|
Tema: ¿Crear controles en tiempo de ejecución con las mismas propiedades y funciónes? (Leído 11,160 veces)
|
Crazy.sx
Desconectado
Mensajes: 447
|
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
Mensajes: 101
|
Así es, creando controles dinámicamente podrías hacerlo sin ningún problema. Ejemplo: private void button1_Click(object sender, EventArgs e) { TabPage miPagina = new TabPage (); Button miBoton = new Button (); miPagina.Text = "PruebaPestaña"; miPagina.Name = "paginaPrueba"; miBoton.Text = "PruebaBoton"; miBoton.Name = "button2"; miBoton .Location = new Point (20, 20); miPagina.Controls.Add(miBoton); tabControl1.TabPages.Add(miPagina); }
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
|
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. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call CrearTab() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TabControl1.TabPages.Remove(TabControl1.SelectedTab) End Sub Private Sub CrearTab() Dim NewTab As New TabPage NewTab.Name = "Tab" & TabControl1.TabCount NewTab.Text = "Tab " & TabControl1.TabCount Me.TabControl1.Controls.Add(NewTab) Dim NewButton As New Button NewButton.Name = "Button1" NewButton.Top = 10 NewButton.Text = "Boton 1" NewTab.Controls.Add(NewButton) AddHandler NewButton.Click, AddressOf ClickBotones Dim NewButton2 As New Button NewButton2.Name = "Button2" NewButton2.Top = 100 NewButton2.Text = "Boton 2" NewTab.Controls.Add(NewButton2) AddHandler NewButton2.Click, AddressOf ClickBotones End Sub Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs) Dim whichButton As Button Dim whichTabPage As Control If TypeOf sender Is Button Then whichButton = CType(sender, Button) whichTabPage = whichButton.Parent MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name) End If End Sub 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
Mensajes: 296
|
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. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call CrearTab() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TabControl1.TabPages.Remove(TabControl1.SelectedTab) End Sub Private Sub CrearTab() Dim NewTab As New TabPage NewTab.Name = "Tab" & TabControl1.TabCount NewTab.Text = "Tab " & TabControl1.TabCount Me.TabControl1.Controls.Add(NewTab) Dim NewButton As New Button NewButton.Name = "Button1" NewButton.Top = 10 NewButton.Text = "Boton 1" NewTab.Controls.Add(NewButton) AddHandler NewButton.Click, AddressOf ClickBotones Dim NewButton2 As New Button NewButton2.Name = "Button2" NewButton2.Top = 100 NewButton2.Text = "Boton 2" NewTab.Controls.Add(NewButton2) AddHandler NewButton2.Click, AddressOf ClickBotones End Sub Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs) Dim whichButton As Button Dim whichTabPage As Control If TypeOf sender Is Button Then whichButton = CType(sender, Button) whichTabPage = whichButton.Parent MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name) End If End Sub 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, 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
|
|
|
|
Crazy.sx
Desconectado
Mensajes: 447
|
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. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call CrearTab() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TabControl1.TabPages.Remove(TabControl1.SelectedTab) End Sub Private Sub CrearTab() Dim NewTab As New TabPage NewTab.Name = "Tab" & TabControl1.TabCount NewTab.Text = "Tab " & TabControl1.TabCount Me.TabControl1.Controls.Add(NewTab) Dim NewButton As New Button NewButton.Name = "Button1" NewButton.Top = 10 NewButton.Text = "Boton 1" NewTab.Controls.Add(NewButton) AddHandler NewButton.Click, AddressOf ClickBotones Dim NewButton2 As New Button NewButton2.Name = "Button2" NewButton2.Top = 100 NewButton2.Text = "Boton 2" NewTab.Controls.Add(NewButton2) AddHandler NewButton2.Click, AddressOf ClickBotones End Sub Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs) Dim whichButton As Button Dim whichTabPage As Control If TypeOf sender Is Button Then whichButton = CType(sender, Button) whichTabPage = whichButton.Parent MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name) End If End Sub 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, 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).aspxY 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: NewButton2.Name = "Button2" NewButton2.Top = 100 NewButton2.Text = "Boton 2" · · · NewButton2.[···]= [···]
¿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
|
podes hacer un bucle For, algo asi: Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call CrearTabModelo() End Sub Private Sub CrearTabModelo() Dim NewTab As New TabPage NewTab.Name = "Tab" & TabControl1.TabCount NewTab.Text = "Tab " & TabControl1.TabCount Me.TabControl1.Controls.Add(NewTab) For i As Integer = 1 To 10 Dim NewButton As New Button NewButton.Name = "Button" & i NewButton.Text = "Boton " & i NewButton.Location = New Point(10, 25 * i) NewTab.Controls.Add(NewButton) AddHandler NewButton.Click, AddressOf ClickBotones Next End Sub Private Sub ClickBotones(ByVal sender As Object, ByVal e As EventArgs) Dim whichButton As Button Dim whichTabPage As Control If TypeOf sender Is Button Then whichButton = CType(sender, Button) whichTabPage = whichButton.Parent MessageBox.Show("Apretaste el " & whichButton.Name & " de la pestaña " & whichTabPage.Name) End If End Sub End Class
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Agregar controles en tiempo de ejecucion
Programación Visual Basic
|
Garrido_jesus20
|
6
|
3,474
|
29 Marzo 2006, 21:57 pm
por Garrido_jesus20
|
|
|
[Aporte]Crear controles en tiempo de Ejecución
Programación Visual Basic
|
Freeze.
|
0
|
2,663
|
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
|
20,001
|
24 Septiembre 2020, 08:18 am
por YouMash
|
|
|
¿Como crear imagenes en tiempo de ejecucion?
.NET (C#, VB.NET, ASP)
|
Brian1511
|
2
|
2,996
|
5 Diciembre 2012, 18:17 pm
por Brian1511
|
|
|
crear controles en tiempo de ejecucion
.NET (C#, VB.NET, ASP)
|
d91
|
6
|
9,243
|
20 Diciembre 2015, 23:03 pm
por mOrfiUs0
|
|