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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Pasar variable al abrir form.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar variable al abrir form.  (Leído 2,104 veces)
.:Weeds:.

Desconectado Desconectado

Mensajes: 122



Ver Perfil
Pasar variable al abrir form.
« en: 20 Enero 2014, 02:19 am »

Hola. Estoy creando un chat con el cual desde el formulario CONTACTOS llamo al form CHAT, al form chat le tengo que pasar una variable que determina el contacto con el que se efectuará la conversacion. Lo estoy haciendo de manera 'chapuzas', os pongo ejemplo.

Código
  1. Dim asm As System.Reflection.Assembly = _
  2. System.Reflection.Assembly.GetExecutingAssembly()
  3. Dim frm As Form = _
  4. CType(asm.CreateInstance("Proyecto.Chat"), Form)
  5. frm.Text = contacto 'Aqui asigno el contacto y despues lo recibo desde el evento load
  6. frm.Show()

No hay alguna manera mejor de llevar a cabo esto?

Saludos y gracias.


En línea


Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Pasar variable al abrir form.
« Respuesta #1 en: 20 Enero 2014, 03:58 am »

No hay alguna manera mejor de llevar a cabo esto?

¿Porque utilizas reflection para instanciar un form que ya es accesible desde el propio ensamblado para modificar una propiedad?.

...a menos que existan otros aspectos del problema que no hayas detallado o que yo no haya entedido y te obliguen a usar Reflection, no es necesario más que esto:

Código
  1. Chat.Text = contacto
  2. Chat.Show()

Aparte, como alternativa (aunque innecesaria dado el caso), quizás podrías valerte del constructor del form:

Código
  1. Public Class ChatForm
  2.  
  3.    Public Sub New(ByVal Contact As String)
  4.  
  5.        InitializeComponent()
  6.        MyBase.Text = Contact
  7.  
  8.    End Sub
  9.  
  10.    Private Shadows Sub Load(sender As Object, e As EventArgs) Handles MyBase.Load
  11.  
  12.        MsgBox(MyBase.Text)
  13.  
  14.    End Sub
  15.  
  16. End Class

Código
  1. Public Class Form1
  2.  
  3.    Private WithEvents ChatForm As Form = Nothing
  4.  
  5.    Private Sub ShowForm()
  6.  
  7.        ChatForm = New ChatForm("Mi contacto")
  8.        ChatForm.Show()
  9.  
  10.    End Sub
  11.  
  12. End Class

PD: No se si es eso lo que andas buscando.

Saludos


« Última modificación: 20 Enero 2014, 04:16 am por Eleкtro » En línea


.:Weeds:.

Desconectado Desconectado

Mensajes: 122



Ver Perfil
Re: Pasar variable al abrir form.
« Respuesta #2 en: 20 Enero 2014, 05:13 am »

Eso es, lo del constructor del form es lo que andaba buscando. Pasar la variable utilizando .Text es como lo hago pero demasiado chapuzas.

Otra cuestión, puedo cargar el form en memoria para que sea mas fluido abrirlo por primera vez? Me explico, cuando llamo a abrir el form por primera vez tarda en abrirse, pero todas las demas se abre rapido como me gustaria que fuera la primera. Se me ha ocurrido otro metodo chapuzas que es iniciar el form 'Invisible' al cargar el programa forzando a cargarse pero me gustaria hacer las cosas bien.

Pd: Cotilleando tu perfil veo que somos valencianos los dos. No tiene que ver con la cuestion pero me ha llamado la atención.

Saludos y gracias.
En línea


Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Pasar variable al abrir form.
« Respuesta #3 en: 20 Enero 2014, 13:34 pm »

Se me ha ocurrido otro metodo chapuzas que es iniciar el form 'Invisible' al cargar el programa forzando a cargarse pero me gustaria hacer las cosas bien.

Vaya, pues eso es lo que te iba a decir yo xD.

Teniendo en cuenta que en cada inicio la aplicación debes instanciar ese form una primera vez para que todos los controles se dibujen y tal ...yo creo que lo que llamas método chapuzas en realidad es la única manera de aumentar la velocidad de carga. aunque, bueno, mi especialidad no es el rendimiento de memoria, sólamente hablo por lógica ya que lo innecesario no se carga en memoria a menos que sea bajo demanda.

Esto es una de esas cosas que deberían hacerse al cargar la aplicación, es decir en el evento Startup.

Y si tienes varios forms que deseas mantener "cargados" entonces podrías valerte de un Stack de forms para ir precargándolos cuando sea necesario.

Código
  1. Public Class Form1
  2.  
  3.    Public Shared PreloadForms As New Stack(Of Form)
  4.  
  5.    Private Shadows Sub Shown() Handles MyBase.Shown
  6.        ShowForm()
  7.    End Sub
  8.  
  9.    Private Sub ShowForm()
  10.        ' Muestro el Formulario y lo elimino del stack.
  11.        PreloadForms.Pop.Show()
  12.    End Sub
  13.  
  14. End Class

Código
  1. Imports WindowsApplication... .Form1
  2.  
  3. Namespace My
  4.  
  5.    Friend Class MyApplication
  6.  
  7.        Private Shadows Sub Startup() Handles MyBase.Startup
  8.  
  9.            ' Añado el form al stack, es decir, lo precargo.
  10.            PreloadForms.Push(My.Forms.Form2)
  11.  
  12.            ' Información adicional.
  13.            Debug.WriteLine(String.Format("{0} is preloaded", Form1.PreloadForms.Peek.Name))
  14.  
  15.        End Sub
  16.  
  17.    End Class
  18.  
  19. End Namespace

Y aparte de eso puedes precompilar tu aplicación usando NGEN.

Saludos
« Última modificación: 20 Enero 2014, 14:09 pm por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar una variable de un form a otro.
Programación Visual Basic
ciruit 1 1,316 Último mensaje 31 Enero 2006, 00:12 am
por ciruit
Abrir un form desde otro form con netbeans en java
Java
murdock_ 3 45,312 Último mensaje 1 Enero 2009, 03:44 am
por sapito169
Cargar un Form desde una Variable..
Programación Visual Basic
ssccaann43 © 2 3,054 Último mensaje 17 Marzo 2010, 18:37 pm
por ssccaann43 ©
Abrir form usando una variable de cadena de caraceteres.(SOLUCIONADO)
.NET (C#, VB.NET, ASP)
ezugaru 4 7,087 Último mensaje 15 Junio 2010, 05:37 am
por raul338
Pasar valores de Form a Form JS
Desarrollo Web
Riki_89D 7 6,446 Último mensaje 7 Diciembre 2010, 00:12 am
por Riki_89D
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines