form3(hijo).txtNombre.text="Probando"
/
pero estoy no hace absolutamente nada, no hace lo que se le pide y no pone
error alguno, si esto mismo lo hago entre dos formularios no MDI si que
funciona, pero siendo MDIs no, agradeceria enormemente la ayuda.
Gracias y saludos!
Si tu intención es pasar un dato a un formulario cualquiera, lo mejor que
puedes hacer es sobrecargar el constructor (procedimiento «New») de dicho
formulario para que acepte argumentos.
Por ejemplo, si tu deseas pasarle un valor al control TextBox existente en
el formulario Form3, éste tendría los siguientes constructores:
Public Class Form3
Public Sub New()
' Constructor por defecto del formulario
'
Me.New(String.Empty)
End Sub
Public Sub New(ByVal nombre As String)
' Llamada necesaria para el Diseñador de Windows Forms.
InitializeComponent()
' Asignamos el valor del control TextBox
txtNombre.Text = nombre
End Sub
End Class
Ahora, desde el formulario padre (Form1), llamaríamos a Form2 y Form3 de la
siguiente manera:
Public Class Form1
Private m_frm2 As Form2
Private m_frm3 As Form3
Private Sub FormOnClosing( _
ByVal sender As Object, _
ByVal e As FormClosingEventArgs)
' Se ha cerrado el formulario hijo; establecemos
' a Nothing el valor del campo.
'
Dim frm As Form = DirectCast(sender, Form)
If frm.Name = "Form2" Then
m_frm2 = Nothing
ElseIf frm.Name = "Form3" Then
m_frm3 = Nothing
End If
End Sub
End Class
Cuando desees mostrar el formulario Form2, ejecutarías:
If (m_frm2 Is Nothing) Then
' Referenciamos el formulario Form2
'
m_frm2 = New Form2()
' Instalamos el controlador para el
' evento FormClosing del formulario
'
AddHandler m_frm2.FormClosing, AddressOf FormOnClosing
End If
m_frm2.MdiParent = Me
m_frm2.Name = "Form2"
m_frm2.Show()
Y cuando desees mostrar el formulario Form3, ejecutarías ésto otro:
If (m_frm3 Is Nothing) Then
' Referenciamos el formulario Form3, pasándole un
' valor al constructor sobrecargado.
'
m_frm3 = New Form3("Probando")
' Instalamos el controlador para el
' evento FormClosing del formulario
'
AddHandler m_frm3.FormClosing, AddressOf FormOnClosing
End If
m_frm3.MdiParent = Me
m_frm3.Name = "Form3"
m_frm3.Show()
Verás como de ésta manera, todo te funcionará adecuadamente. :-)
Un saludo
--
Enrique Martínez
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Una variable friend en un modulo bas permite pasar datos no solo entre dos
form, si no en todo el proyecto.
M iguel
"SoftJa�n" <grupo_n...@softjaen.es> escribi� en el mensaje
news:C628259A-466D-4621...@microsoft.com...
> Hola:
>
> Si tu intenci�n es pasar un dato a un formulario cualquiera, lo mejor que
> puedes hacer es sobrecargar el constructor (procedimiento �New�) de dicho
> formulario para que acepte argumentos.
>
> Por ejemplo, si tu deseas pasarle un valor al control TextBox existente en
> el formulario Form3, �ste tendr�a los siguientes constructores:
>
> Public Class Form3
>
> Public Sub New()
>
> ' Constructor por defecto del formulario
> '
> Me.New(String.Empty)
>
> End Sub
>
> Public Sub New(ByVal nombre As String)
>
> ' Llamada necesaria para el Dise�ador de Windows Forms.
> InitializeComponent()
>
> ' Asignamos el valor del control TextBox
> txtNombre.Text = nombre
>
> End Sub
>
> End Class
>
> Ahora, desde el formulario padre (Form1), llamar�amos a Form2 y Form3 de
> la siguiente manera:
>
> Public Class Form1
>
> Private m_frm2 As Form2
> Private m_frm3 As Form3
>
> Private Sub FormOnClosing( _
> ByVal sender As Object, _
> ByVal e As FormClosingEventArgs)
>
> ' Se ha cerrado el formulario hijo; establecemos
> ' a Nothing el valor del campo.
> '
> Dim frm As Form = DirectCast(sender, Form)
>
> If frm.Name = "Form2" Then
> m_frm2 = Nothing
>
> ElseIf frm.Name = "Form3" Then
> m_frm3 = Nothing
>
> End If
>
> End Sub
>
> End Class
>
> Cuando desees mostrar el formulario Form2, ejecutar�as:
>
> If (m_frm2 Is Nothing) Then
> ' Referenciamos el formulario Form2
> '
> m_frm2 = New Form2()
>
> ' Instalamos el controlador para el
> ' evento FormClosing del formulario
> '
> AddHandler m_frm2.FormClosing, AddressOf FormOnClosing
> End If
>
> m_frm2.MdiParent = Me
> m_frm2.Name = "Form2"
> m_frm2.Show()
>
> Y cuando desees mostrar el formulario Form3, ejecutar�as �sto otro:
>
> If (m_frm3 Is Nothing) Then
> ' Referenciamos el formulario Form3, pas�ndole un
> ' valor al constructor sobrecargado.
> '
> m_frm3 = New Form3("Probando")
>
> ' Instalamos el controlador para el
> ' evento FormClosing del formulario
> '
> AddHandler m_frm3.FormClosing, AddressOf FormOnClosing
> End If
>
> m_frm3.MdiParent = Me
> m_frm3.Name = "Form3"
> m_frm3.Show()
>
> Ver�s como de �sta manera, todo te funcionar� adecuadamente. :-)
>
> Un saludo
>
> --
> Enrique Mart�nez
> [MS MVP - VB]
>
> Nota informativa: La informaci�n contenida en este mensaje, as� como el
> c�digo fuente incluido en el mismo, se proporciona �COMO EST��, sin
> garant�as de ninguna clase, y no otorga derecho alguno. Usted asume
> cualquier riesgo al poner en pr�ctica, utilizar o ejecutar lo recomendado
> Y no es mas facil usar variables friend en un modulo bas? o es que no se
> debe hacer as�?
>
> Una variable friend en un modulo bas permite pasar datos no solo entre dos
> form, si no en todo el proyecto.
�Hombre! Tanto como poder, se puede. Pero digamos que es una buena pr�ctica
de programaci�n, encapsular los procedimientos de propiedad y m�todos en su
correspondiente clase, mayormente sabiendo que el lenguaje nos permite la
sobrecarga de m�todos.
Si mediante par�metros podemos pasar valores a los procedimientos, �para qu�
utilizar variables con �mbito Friend o Public? Cuando el �mbito del
procedimiento sea menor, mucho mejor. S�lo cuando no haya m�s remedio,
entonces es cuando se deber�a de utilizar un �mbito mayor, o utilizar
procedimientos generales a nivel de un M�dulo, con una visibilidad Friend o
Public.
Por supuesto, es mi opini�n personal, que puede que guste o no. :-)
Un saludo
--
Enrique Mart�nez
[MS MVP - VB]
Nota informativa: La informaci�n contenida en este mensaje, as� como el
c�digo fuente incluido en el mismo, se proporciona �COMO EST��, sin
garant�as de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en pr�ctica, utilizar o ejecutar lo recomendado o
tambien es mi opinion, jeje
saludos
"SoftJa�n" <grupo_n...@softjaen.es> escribi� en el mensaje
news:18CF2DF8-F10F-4A58...@microsoft.com...
> "Miguel F" pregunt�:
>
>> Y no es mas facil usar variables friend en un modulo bas? o es que no se
>> debe hacer as�?
>>
>> Una variable friend en un modulo bas permite pasar datos no solo entre
>> dos form, si no en todo el proyecto.
>
> �Hombre! Tanto como poder, se puede. Pero digamos que es una buena
> pr�ctica de programaci�n, encapsular los procedimientos de propiedad y
> m�todos en su correspondiente clase, mayormente sabiendo que el lenguaje
> nos permite la sobrecarga de m�todos.
>
> Si mediante par�metros podemos pasar valores a los procedimientos, �para
> qu� utilizar variables con �mbito Friend o Public? Cuando el �mbito del
> procedimiento sea menor, mucho mejor. S�lo cuando no haya m�s remedio,
> entonces es cuando se deber�a de utilizar un �mbito mayor, o utilizar
> procedimientos generales a nivel de un M�dulo, con una visibilidad Friend
> o Public.
>
> Por supuesto, es mi opini�n personal, que puede que guste o no. :-)
>
> Un saludo
>
> --
> Enrique Mart�nez
> [MS MVP - VB]
>
> Nota informativa: La informaci�n contenida en este mensaje, as� como el
> c�digo fuente incluido en el mismo, se proporciona �COMO EST��, sin
> garant�as de ninguna clase, y no otorga derecho alguno. Usted asume
> cualquier riesgo al poner en pr�ctica, utilizar o ejecutar lo recomendado
Siguiendo con opiniones ;-) yo creo que tu opción sólo gana en
productividad (menos tiempo ergo menos dinero) a corto plazo. A poco
que la aplicación sea un poco grande y tenga que ir creciendo... o
haya que mantenerla y eventualmente ampliarla durante muchos años, las
variables globales son un pequeño monstruo que va creciendo y
volviéndose malo malísimo. Si se mantienen muy a raya, es verdad, son
un sistema fácil, rápido y que funciona perfectamente. Pero yo salvo
en proyectos muy pequeños y puntuales no las recomendaría.
Un saludo.