none
Como usar um "Form" como molde para executar as outras partes do programa dentro de si? RRS feed

  • Pergunta

  • Estou em duvida em como Configurar um form para servir de Molde/base para as novas partes do programa abrirem dentro dessa base, sem mexer na estrutura principal.... Por exemplo, a tela do programa terá a barra de menus e espaços para atalhos fixos, e um bloco abaixo (o  tamanho não foi definido ainda), no qual irá aparecer todas as outras delas do programa. Pensei em fazer isso em camadas não não consegui achar uma solução para tal.... desde já agradeço.
    sábado, 13 de fevereiro de 2016 15:35

Respostas

  • Brunno o vc esta chamando de função são as suas telas ? se for isso vc poderia utilizar o MDI, onde vc tera um form principal com o menu horizontal e um menu vertical (que seria os atalhos) o panel preto na verdade seria os teus forms que abririam nesse espaço.  No caso do mdi as telas ficariam sobrepostas na ordem que forem abertas, uma vantagem disso é que o usuário pode abrir uma tela por cima da outra sem perder a consulta que foi realizada na 1 tela, mas pode-se mudar isso via programação fechando a tela 1 para abrir a tela 2. 

    Att, wsti.

    • Sugerido como Resposta SimorC segunda-feira, 15 de fevereiro de 2016 06:13
    • Marcado como Resposta Marcos SJ segunda-feira, 15 de fevereiro de 2016 11:13
    sábado, 13 de fevereiro de 2016 22:42
    • Você precisa definir onde o Form vai abrir (posição X e Y) dentro do MDI.
    • Você deve tirar a barra de título do Form e definir a altura e largura dele.
    • Cada novo Click para abrir um form deve fechar os outros, ou colocar o Atual para o topo.

    Segue um exemplo, note que existe código para se adicionar no evento de clique para abrir no MDI e configurações que serão aplicadas ao Form que pretende abrir. Bom, veja o exemplo que você vai entender.

    //No MDI que abre o form
    form.StartPosition = FormStartPosition.Manual;
    //Aqui você define onde vai abrir o form
    form.Location = new System.Drawing.Point(200, 0);
    form.Show();
    
    //No Form
    //Remover as bordas e a barra de título
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    //tamanho da janela
    this.ClientSize = new System.Drawing.Size(422, 313);

    • Sugerido como Resposta SimorC segunda-feira, 15 de fevereiro de 2016 06:13
    • Marcado como Resposta Marcos SJ segunda-feira, 15 de fevereiro de 2016 11:13
    sábado, 13 de fevereiro de 2016 22:56
    • Sugerido como Resposta 'Natan Silva sábado, 13 de fevereiro de 2016 16:11
    • Marcado como Resposta Marcos SJ segunda-feira, 15 de fevereiro de 2016 11:13
    sábado, 13 de fevereiro de 2016 16:06

Todas as Respostas

    • Sugerido como Resposta 'Natan Silva sábado, 13 de fevereiro de 2016 16:11
    • Marcado como Resposta Marcos SJ segunda-feira, 15 de fevereiro de 2016 11:13
    sábado, 13 de fevereiro de 2016 16:06
  • É uma aplicação Desktop. Para melhor exemplificar criei o exemplo acima. Segundo o link passado ( http://www.c-sharpcorner.com/UploadFile/deveshomar/master-page-in-C-Sharp-window-forms/ ) ele copia toda a estrutura e abre uma nova guia. Mas não é o que eu preciso, eu quero manter (seguindo a imagem acima) toda a estrutura do form, menos o painel em preto, pois será nele que aparecerá as novas janelas do programa. Ai eu irei associar aquele espaço o que o usuário estiver fazendo, por exemplo ele clica no em uma opção da barra de menu e essa opção chamara a função e aparecerá neste espaço, se ele clicar um atalho (os quadrados cinzas) apenas mudará o conteúdo do bloco preto, que chamará a nova função. Não quero abrir novas janelas nem pop-ups... quero que tudo seja executado dentro do espaço determinado.

    sábado, 13 de fevereiro de 2016 22:26
  • Brunno o vc esta chamando de função são as suas telas ? se for isso vc poderia utilizar o MDI, onde vc tera um form principal com o menu horizontal e um menu vertical (que seria os atalhos) o panel preto na verdade seria os teus forms que abririam nesse espaço.  No caso do mdi as telas ficariam sobrepostas na ordem que forem abertas, uma vantagem disso é que o usuário pode abrir uma tela por cima da outra sem perder a consulta que foi realizada na 1 tela, mas pode-se mudar isso via programação fechando a tela 1 para abrir a tela 2. 

    Att, wsti.

    • Sugerido como Resposta SimorC segunda-feira, 15 de fevereiro de 2016 06:13
    • Marcado como Resposta Marcos SJ segunda-feira, 15 de fevereiro de 2016 11:13
    sábado, 13 de fevereiro de 2016 22:42
    • Você precisa definir onde o Form vai abrir (posição X e Y) dentro do MDI.
    • Você deve tirar a barra de título do Form e definir a altura e largura dele.
    • Cada novo Click para abrir um form deve fechar os outros, ou colocar o Atual para o topo.

    Segue um exemplo, note que existe código para se adicionar no evento de clique para abrir no MDI e configurações que serão aplicadas ao Form que pretende abrir. Bom, veja o exemplo que você vai entender.

    //No MDI que abre o form
    form.StartPosition = FormStartPosition.Manual;
    //Aqui você define onde vai abrir o form
    form.Location = new System.Drawing.Point(200, 0);
    form.Show();
    
    //No Form
    //Remover as bordas e a barra de título
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    //tamanho da janela
    this.ClientSize = new System.Drawing.Size(422, 313);

    • Sugerido como Resposta SimorC segunda-feira, 15 de fevereiro de 2016 06:13
    • Marcado como Resposta Marcos SJ segunda-feira, 15 de fevereiro de 2016 11:13
    sábado, 13 de fevereiro de 2016 22:56
  • Exatamente isso. Foi de muita ajuda. Obrigado

    sábado, 13 de fevereiro de 2016 23:28
  • Exatamente isso. Foi de muita ajuda. Obrigado
    sábado, 13 de fevereiro de 2016 23:28
  • Bom dia Bruno_tec96,

    Tudo bem?

    Em suas próximas threads, por gentileza, marque a resposta através do link Marcar como Resposta conforme a postagem que o ajudou a resolver o problema.

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 15 de fevereiro de 2016 11:15