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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Array de Controles con Eventos en VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Array de Controles con Eventos en VB.NET  (Leído 4,015 veces)
bybaal

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Array de Controles con Eventos en VB.NET
« en: 18 Enero 2021, 07:54 am »

Hace tiempo que estoy buscando como crear arrays de controles y que estos respondan a eventos en vb.net y no he logrado encontrar algo que me sirva para algo como esto:

Supongamos que tengo un botón que dice buscar y que cada vez que el usuario haga click en el, se cree una etiqueta que diga Buscando y un boton que diga detener y que al hacer click en el botón Detener se elimine el botón y su etiqueta correspondiente

Saludos y gracias


En línea

ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Array de Controles con Eventos en VB.NET
« Respuesta #1 en: 19 Enero 2021, 18:49 pm »

Lo haces creando dichos controles dinamicamente, algo como esto:

Código
  1. List<Control> ctrls = new List<Control>();
  2.  
  3. void BtnSearchClick(object sender, EventArgs e) {
  4.    Label lblStatus = new Label {
  5.        Text = "Buscando...",
  6.        Location = new Point(200, 104)
  7.    };
  8.  
  9.    Button btnStop = new Button {
  10.        Text = "Detener",
  11.        Location = new Point(300, 100)
  12.    };
  13.  
  14.    btnStop.Click += (obj, args) => {
  15.        // codigo para detener operacion
  16.        // ...
  17.  
  18.        foreach(var ctrl in ctrls) {
  19.            this.Controls.Remove(ctrl);
  20.            ctrl.Dispose();
  21.        }
  22.  
  23.        ctrls.Clear();
  24.    };
  25.  
  26.    ctrls.Add(lblStatus);
  27.    ctrls.Add(btnStop);
  28.    this.Controls.AddRange(ctrls.ToArray());
  29. }

Saludos

EDIT: Ni siquiera me fije en la referencia a VB.NET  :xD :silbar:


« Última modificación: 19 Enero 2021, 20:21 pm por ThunderCls » En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
FJDA


Desconectado Desconectado

Mensajes: 322


Ver Perfil
Re: Array de Controles con Eventos en VB.NET
« Respuesta #2 en: 19 Enero 2021, 20:07 pm »

[MODIFICADO]

Los arrays de controles en VB.NET se crean con variables de objetos

Ejemplo sencillo

Código
  1.    Dim MiLabel As Label
  2.        MiLabel = New Label
  3.        MiLabel.Text = "Hola mundo"
  4.        Me.Controls.Add(MiLabel)
  5.  


Puedes declararlo de forma general para poder ser creado dentro de cualquier evento. En este ejemplo se declara el objeto y desde el un botón se le asigna una propiedad y se añade al Form.


Código
  1. Public Class Form1
  2.    Dim MiLabel As New Label
  3.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.    End Sub
  5.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  6.        MiLabel.Text = "Hola mundo"
  7.        Me.Controls.Add(MiLabel)
  8.  
  9.    End Sub
  10. End Class
  11.  


Y por último lo mismo pero creando un array para las etiquetas y un botón además del evento Click para dicho botón. (Mas tarde he modificado el código y añadí eventos a la matriz de etiquetas 'Label' tras volver a leer tu duda)

Código
  1. Public Class Form1
  2.    Dim MiLabel(5) As Label
  3.    Dim MiBoton As New Button
  4.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  5.        Me.Width = 200 : Me.Height = 300
  6.  
  7.        With MiBoton 'Propiedades para el botón
  8.            MiBoton.Text = "Crear Labels"
  9.            MiBoton.Location = New Point(20, 20)
  10.        End With
  11.        Me.Controls.Add(MiBoton) 'Añade el control al formulario Form1
  12.        AddHandler MiBoton.Click, AddressOf MiBoton_Click  'Vincula MiBoton con el evento MiBoton_Click y evento Click
  13.  
  14.  
  15.    End Sub
  16.    Private Sub MiBoton_Click(sender As Object, e As EventArgs)
  17.        Dim iTop As Integer = 30
  18.        For I As Integer = 0 To MiLabel.Count - 1
  19.            iTop += 20
  20.            MiLabel(I) = New Label 'Crea los 6 Labels
  21.            With MiLabel(I) 'Asigna propideades
  22.                .Text = "Label " & (I + 1)
  23.                ' .Top = iTop
  24.                ' .Left = 20
  25.                .Location = New Point(20, iTop)
  26.                .Font = New Font("Calibri", 12)
  27.            End With
  28.  
  29.            Me.Controls.Add(MiLabel(I)) 'Añade los seis Labels al formulario.
  30.        Next
  31.  
  32.        For I As Integer = 0 To MiLabel.Length - 1
  33.            AddHandler MiLabel(I).Click, AddressOf MiLabel_Click  'Vincula MiLabel con el evento MiLabel_Click y evento Click
  34.        Next
  35.  
  36.    End Sub
  37.  
  38.    Private Sub MiLabel_Click(sender As Object, e As EventArgs)
  39.        Dim Index As Integer = Array.IndexOf(MiLabel, sender)
  40.        If Index.Equals(0) Then MiLabel(0).Text = "Hiciste Click"
  41.        If Index.Equals(1) Then MiLabel(1).Text = "Hiciste Click"
  42.    End Sub
  43.  
  44.  
  45. End Class
  46.  


Mírate también otras aportaciones de otros usuarios

https://foro.elhacker.net/net_c_vbnet_asp/crear_controles_en_tiempo_de_ejecucion-t445828.0.html;msg2051279#msg2051279

https://foro.elhacker.net/net_c_vbnet_asp/crear_controles_en_tiempo_de_ejecucion-t445828.0.html;msg2051365#msg2051365


y recuerda usar el método Control.Dispose() cuando ya no lo vayas a usar para  eliminar el objeto y liberar memoria.





« Última modificación: 20 Enero 2021, 19:53 pm por FJDA » En línea

bybaal

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Re: Array de Controles con Eventos en VB.NET
« Respuesta #3 en: 20 Enero 2021, 06:50 am »

Perfecto, mil gracias, esto resuelve completamente mis dudas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿ Array de controles en Java ?
Java
DarkSigma 8 4,438 Último mensaje 7 Febrero 2006, 16:47 pm
por Casidiablo
Como hacer un array de controles
Java
yerson 3 10,009 Último mensaje 8 Junio 2009, 11:13 am
por ~~
array de controles
.NET (C#, VB.NET, ASP)
Sr.Morocco 4 5,100 Último mensaje 15 Marzo 2010, 18:43 pm
por [D4N93R]
Problema con eventos al crear controles por codigo
.NET (C#, VB.NET, ASP)
Zeroql 2 3,207 Último mensaje 14 Marzo 2010, 20:20 pm
por Zeroql
Aasignar eventos a Controles creados en tiempo de ejecucion
.NET (C#, VB.NET, ASP)
_vicho_ 3 2,740 Último mensaje 31 Octubre 2019, 16:26 pm
por _vicho_
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines