|
Tranquilo, no es molestia. Para eso estamos.
Bueno, he hecho una pequeña prueba para comprobar qué te puede estar pasando. El siguente código funciona independientemente de cual es la ventana hija activa:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
hijo1 = New Form2
hijo2 = New Form2
hijo1.MdiParent = Me
hijo2.MdiParent = Me
hijo1.Show()
hijo2.Show()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
hijo1.Label1.Text = Now.ToLongTimeString()
hijo2.Label1.Text = Now.AddHours(3).ToLongTimeString()
End Sub
Entiendo qeu haces algo por el estilo, con lo que debemos buscar algo que podría darte problemas.
La opción más directa que se me ocurre es la resolución de los eventos. Si los cambios en las pantallas vienen dados por eventos, es posible que no te estén llegando a las ventanas que no están activas (me parece raro, pero podría ocurrir), o quizás estos evento llegan pero no se ejecutan por tener que esperar en la cola si tienes alguna funcionalidad que consuma el procesador.
Si es este segundo caso, la solución es fácil. En ese proceso que consume tanto, haz que se pare de vez en cuando para que se ejecuten los eventos en cola. Esto se hace con Application.DoEvents()
Si es el primer caso, la solución podría ser más compleja, y depende de como tengas estructurado el programa.
Se me ocurre también que, dependiendo de cómo lo tengas hecho, hagas como yo, utilizar un temporizador en la ventana padre, y que sea éste el que se encargue de mirar a través del COM los valores que los dispositivos externos.
No sé si te estaré ayudando o te lio más. Si no te resuelve esto, por favor, dame más datos sobre si tienes eventos, temporizadores, etc.
Un saludo.
|