none
Como ejecutar Procedimientos en otro form RRS feed

  • Pregunta

  • Me explico tengo dos form (form1 y form2) . En el form2, tengo un procedimiento que carga unos datos pero quiero llamarlo desde el form1 pero aunque navego previamente a form2 no me muestra los datos. Mientras que si navego a form2 y desde ahi llamo al procedimiento si me los carga. No tengo ni idea de que ocurre. gracias
    sábado, 7 de febrero de 2009 1:28

Todas las respuestas

  • gombarjo dijo:

    Me explico tengo dos form (form1 y form2) . En el form2, tengo un procedimiento que carga unos datos pero quiero llamarlo desde el form1 pero aunque navego previamente a form2 no me muestra los datos. Mientras que si navego a form2 y desde ahi llamo al procedimiento si me los carga. No tengo ni idea de que ocurre. gracias



    Hola, Gombarjo:

    Sin ver tu código, es bien difícil aventurarse a sugerir la causa de tus problemas.

    Lo más conveniente, sin embargo, es que el código común a diferentes formularios no esté alojado en ninguno de ellos: eso constituye un error de diseño llamado "acoplamiento innecesario", y no produce más que problemas.

    Lo más conveniente sería que escribieras ese procedimiento en una clase (o en un módulo, si aun te sientes incómodo con el concepto de clases) y lo llames desde cualquiera de los dos formularios (tratando, por supuesto, de no hacer referencias a ningún formulario específico: en cualquier caso, a un formulario que reciba como parámetro: Public Sub miProcedimiento(ByVar f As algunTipoDeFormulario). De esta manera, si funciona con un formulario funcionará con cualquiera que tenga una estructura compatible.


    Salud!
    sábado, 7 de febrero de 2009 6:41
  • El codigo que tengo en el FORM1 es una funcion que llama al otro form lo que quiero es que cuando navegue al FORM2, se me carguen los datos en unos textbox pero el procedimiento de carga de los mismos esta en FORM2 y NO se como invocarlo desde el form1. Gracias

        Function NavegaDatosIncidencia(ByVal ncodigo As String) As Boolean
            Dim FormulNavegacion As Form
            FormulNavegacion = New FdescIncidencia
            'FormulNavegacion.Text = aNombreTecnico

            FormulNavegacion.ShowDialog()
            FormulNavegacion.Dispose()

            FormulNavegacion.Refresh()
            Me.BringToFront()


        End Function


    sábado, 7 de febrero de 2009 14:34
  • Hola,

    La verdad, no entiendo la relación entre el código que muestras y el problema que describes.

    Hay errores en tu ejemplo:

    1: Si sabes que vas a crear el formulario mediante New FdescIncidencia, deberías declararlo As FdescIncidencia, no As Form.
    2: Si muestras el formulario mediante ShowDialog, la ejecución se detiene hasta que el formulario se cierra. Despues de cerrarlo llamas a su método Dispose, que libera todos los recursos no administrados que contiene. ¿Para qué llamas a Refresh despues de Dispose? (en primer lugar, ya no está visible, y a consecuencia de Dispose, ya no está en estado operacional).

    ¿Donde están los TextBox que quieres cargar con datos que están dónde?


    Salud!
    domingo, 8 de febrero de 2009 1:20
  • Hola, tu explicación resulta muy complicada para ayudarte. Sin embargo, puedo interpretar lo siguiente

    1.- Abres tu formulario 1 y sus controles los llenas de datos
    2.- abres un formulario 2 y este se llena de datos
    3.- cierras tu formulario 2
    4.- el formulario 1 se llena de nuevos datos obtenidos en el formulario 2

    de ser correcto esto:

    En tu formulario 2 expon propiedades, es decir propiedades públicas, por ejemplo:
    public string UnValor { get; set; }
    Luego cuando llamas a tu messagebox haces lo siguiente:

    if(Form2.ShowDialog() == DialogResult.Yes)
    {
        Form1.CajaTextoUno.Text = Form2.UnValor;
    }

    Profesionista Microsoft VIP México World Wide Finalist Imagine Cup 2007 C#, WPF, WCF
    martes, 21 de abril de 2009 5:13