none
MDI formChild RRS feed

  • Pregunta

  • Buenas my gente.

    My aplicacion apresenta um problema que es en el formChild, quando click no menuItem para llamar el formChild este lleva muito tiempo para responder "Esta muy lento" como hago para salir de eso. Ally va my codigo del menuItem:

    private void facturaçãoMenuItem_Click(object sender, EventArgs e)
            {
                //Rotina para Mantener um unico form Mdi abierto
                Boolean achou = false;
                foreach (Form item in MdiChildren)
                {
                    //
                    if (item is FormFacturacao)
                    {
                        //Achou sirve para que a rotina não abra novamente o mesmo formChild
                        achou = true;
                        item.Focus();
                    }
                }
                //Verifica se o formChild yá está abierto. Se estiver impeça a abertura de um novo e exibe uma mensagem al usuário
                if (achou.Equals(false))
                {
                    FormFacturacao facturacao = new FormFacturacao();
                    facturacao.MdiParent = this;
    
                    //Centraliza o Form filho 
                    facturacao.StartPosition = FormStartPosition.Manual;
                    int x = (this.Width - facturacao.Width) / 2;
                    int y = (this.Height - facturacao.Height) / 2;
                    facturacao.Location = new Point(x, y);
                    facturacao.Show();
                }
                else
                {
                    MessageBox.Show("O formulário já está aberto! Feche este formulário para abrir outro!",
                                     "Mensagem do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    
                }
            }

    Necessito ayuda para salir de eso...

    Gracias a todos.



    NekFred,Lda

    viernes, 26 de octubre de 2012 10:45

Todas las respuestas

  • En principio, el código parece correcto a simple vista. No hay motivo para que resulte lento, salvo que tengas miles de formularios hijos, en cuyo caso el bucle podría tardar mucho en recorrerlos todos.

    Sugiero seguir paso a paso la ejecución con el debugger de Visual Studio (o usar las herramientas de "profiling"), hasta identificar cuál es concretamente la línea en que ocurre la demora. A partir de ahí investigaríamos esa línea concreta para ver qué motivos puede tener para ser lenta.

    sábado, 27 de octubre de 2012 5:56
  • hola eu no falao moito bem portugues pero creo que debes evitar que cuando se cargue un Form o Fabela (creo que asi se dice en brasileiro) no se hagan calculos coloca los valores directamente;


    en resumidas cuentas no uses esta linea o trata de cambiarla

                    int x = (this.Width - facturacao.Width) / 2;
                    int y = (this.Height - facturacao.Height) / 2;

    Saludos

    abrigado!! por el puntaje

    sábado, 27 de octubre de 2012 17:45