none
Abrir un form dentro de un panel de form diferente RRS feed

  • Pregunta

  • Mi duda es la siguiente: tengo varios forms

    El primero, “el principal”, que contiene un panel, desde el que puedo llamar varios formularios, contienen datos numéricos básicamente, al llamar a cada uno puedo verlo en el panel.

    Cada formulario tiene un botón “calcular”, que realiza las operaciones que necesito…lo que yo quiero es que el resultado de esas operaciones matemáticas me las muestre un formulario único y pueda verlo en el formulario principal, más exactamente en el panel.

    …La dificultad pasa porque ese formulario de resultados, no lo puedo ver en el panel. Lo puedo ver, pero en una ventana diferente.

    De antemano muchas gracias.

    jueves, 8 de agosto de 2019 1:22

Todas las respuestas

  • Hola   Joser84

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comparto a continuación el siguiente enlace

    https://code.msdn.microsoft.com/windowsapps/Forms-en-paneles-adis-a-34226a09

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 8 de agosto de 2019 15:02
    Moderador
  • hola

    No evaluaste en lugar de poner forms dentro del Panel el utilizar User Control ? los user control se pueden agregar facilmente al panel o a Tab del TabControl

    >>lo que yo quiero es que el resultado de esas operaciones matemáticas me las muestre un formulario único y pueda verlo en el formulario principal, más exactamente en el panel

    podrias exponer un evento en el form que cargas en el panel para que el resultado de la operacion se envie al form donde quieres mostrar el valor

    Cómo: Provocar y utilizar eventos

    la idea es que expongas elevento en el form que pones dentro del panel

        public event EventHandler<CalcularEventArgs> Calcular;
    
    
        public class CalcularEventArgs : EventArgs
        {
            public decimal resultado { get; set; }
        }

    y desde el form cuando instancias para ponerlo dentro del panel te adjuntas al evento

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    jueves, 8 de agosto de 2019 16:40
  • Cordial saludo

    Tengo cuatro Windows Forms:

    FormPrincipal

    1) FormHorasLaboradas

    2) FormPrestaciones

    3) FormPagoTotal

    Al FormPrincipal le agregué dos botones para llamar a:  1) FormHorasLaboradas y 2) FormPrestaciones, cuando los llamo estos me los muestra en un panel, en PanelContenedor, he utilizado los parámetros que usted me ha indicado. Eso funciona bien!

    1)FormHorasLaboradas tiene un botón “Calcular”, que me arroja el resultado de varias operaciones matemáticas en 3) FormPagoTotal, a este último cuando lo llamo no me lo muestra dentro del panel porque no he sabido programarlo, este no tiene ningún botón de llamado desde el FormPrincipal. No se si tengo que usar los mismos parámetros que me han indicado…y si es así donde? y como? tengo que utilizarlos.

    Muchas gracias. Espero pronto su ayuda.

    jueves, 8 de agosto de 2019 20:19
  • Cordial saludo

    Tengo cuatro Windows Forms:

    FormPrincipal

    1) FormHorasLaboradas

    2) FormPrestaciones

    3) FormPagoTotal

    Al FormPrincipal le agregué dos botones para llamar a:  1) FormHorasLaboradas y 2) FormPrestaciones, cuando los llamo estos me los muestra en un panel, en PanelContenedor, he utilizado los parámetros que usted me ha indicado. Eso funciona bien!

    1)FormHorasLaboradas tiene un botón “Calcular”, que me arroja el resultado de varias operaciones matemáticas en 3) FormPagoTotal, a este último cuando lo llamo no me lo muestra dentro del panel porque no he sabido programarlo, este no tiene ningún botón de llamado desde el FormPrincipal. No se si tengo que usar los mismos parámetros que me han indicado…y si es así donde? y como? tengo que utilizarlos.

    Muchas gracias. Espero pronto su ayuda.

    jueves, 8 de agosto de 2019 20:19
  • hola

    >>este último cuando lo llamo no me lo muestra dentro del panel porque no he sabido programarlo

    En principio tendrias que instanciarlo y agregarlo a al coleccion Controls del Panel, pero esto seria mas simple si usas un User Control en lugar de un form

    Pero depende donde lo quieras mostrar, quizas debas ponerlo en otro panel para mostrar los totales y recibir los datos del evento de los otros forma

    o sea el form principal actuaria de pasamano, tomaria el evento de los otros forms y pasaria mediante propiedad o metodo a el form de totales

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 8 de agosto de 2019 21:28
  • Como se podría hacer? Creo Dedria haber dicho que mis conocimientos de de C# son muy  basicos. Gracias
    jueves, 8 de agosto de 2019 21:40
  • Cordial saludo

    He estado intentando realizar el procedimiento, pero siempre me marca un error. He visto varias recomendaciones, y no le he podido resolver, mi dificultad es que no puedo abrir el "form nieto, en el panel del "form padre".

    Muchas gracias.

    lunes, 12 de agosto de 2019 16:15
  • Prueba esto ya sea dentro de un botón o como quieras llamar al formulario

    Panel p = this.Parent as Panel;
    if (p != null) {
      formX f = new formX();
      f.FormBorderStyle = FormBorderStyle.None;
      f.TopLevel = false;
      f.AutoScroll = true;
      p.Controls.Add(f);
      f.Show();
      this.Close();
    }


    • Editado jlenmar domingo, 29 de marzo de 2020 7:09
    domingo, 29 de marzo de 2020 7:05