Foros del Web » Programación para mayores de 30 ;) » .NET »

Interactuando entre formularios

Estas en el tema de Interactuando entre formularios en el foro de .NET en Foros del Web. Tengo un problema cuando interactuo entre formularios. La idea es rellenar una caja de texto de un formulario que siempre esta abierto desde cualquier parte ...
  #1 (permalink)  
Antiguo 17/07/2006, 03:11
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años
Puntos: 0
Pregunta Interactuando entre formularios

Tengo un problema cuando interactuo entre formularios. La idea es rellenar una caja de texto de un formulario que siempre esta abierto desde cualquier parte del codigo. Hasta ahora no tenia problema me creaba una variable de la clase del formulario, la instanciaba al principio y a trabajar.
var1form1.txtcaja.text="hola"
pero ahora me da una excepcion porque segun he buscado en internet, esa variable se ha instanciado en otro subproceso. Yo necesito que sea asi.
Una explicacion mas detallada:
Tengo un modulo creado donde declaro una variable tal que
dim form as fmformulario 'esta seria una variable de la clase formulario al que quiero acceder
en el load de fmformulario,identifico esa variable con el formulario
form=me
de esta manera, normalmente no hay problemas al acceder a sus campos. En cualquier parte del programa puedo hacer:
form.textbox1.text="hola"
Pero el problema es que tengo un subproceso en el programa y cuando dentro de ese subproceso intento hacer la asignacion anterior, obtengo una excepcion porque fmformulario no se instancio en el subproceso sino en el programa principal. Esta es mi duda y espero que con esta aclaracion me podais ayudar, la verdad es que no tengo ni idea de como enfocarlo.


Alguien me puede ayudar?? Como puedo acceder de forma segura a todos los componentes del formulario desde cualquier sitio??
Muchas gracias
  #2 (permalink)  
Antiguo 17/07/2006, 10:12
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años
Puntos: 1
creo qeu me paso lo mismo, verifica que en el main del formulario incial este asi:
--------------------------------------
[STAThreadAttribute]
static void Main()
{
Application.Run(new Index());
}
-----------------------------
[STAThreadAttribute] este debe estar siempre presente
__________________
Hosting:www.codeperu.com, Trabajo en Perú: www.trabajoperuano.com
  #3 (permalink)  
Antiguo 17/07/2006, 12:30
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años
Puntos: 0
Aclaracion por favor

MI main es parte de un modulo inicio tal que


Sub main()
principal = New fmMDIPrincipal
Application.Run(principal)
End Sub


Si puedes detallame mas como lo harias porque no se como probarlo para vb .net
De todas maneras muchas gracias
  #4 (permalink)  
Antiguo 18/07/2006, 04:38
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Puedes pasarle al subproceso la variable form por referencia

private sub loquesea(byref form as fmformulario)
form.textbox.text = ""
  #5 (permalink)  
Antiguo 18/07/2006, 04:45
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años
Puntos: 0
para complicar , el subproceso es un evento al que no llamo yo sino es que en mi caso es un evento que salta cuando recibo un mensaje en una cola de mensajes, por lo que al no llamarlo yo no puedo mandarle el formulario por referencia
  #6 (permalink)  
Antiguo 18/07/2006, 05:07
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Buf, tuve un problema parecido y mi solución es un poco "chapucera", lo que puedes hacer es crear un timer que cada x tiempo vaya mirando, p.ej. un valor booleano

si el booleano es true, cambias el valor del formulario si es false lo dejas como está.

El booleano lo cambias en el subproceso cuando recibas el mensaje en cola.

Espero que te sirva.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.