none
PictureBox RRS feed

  • Pergunta

  • Boas,

    Entao e o seguinte coloquei uma picturebox no FrmMain da minha aplicaçao com uma imagem, mas quando inicio a aplicaçao e e no menu toolStrip abro o form NovoCliente esse form vai abrir no FrmMain, mas fica por trás da imagem adicionada no FrmMain.

     

    Como faço para a imagem adicionada no frmMain ficar sempre atrás de todos os form abertos?

     

    Cumprimentos

    segunda-feira, 7 de março de 2011 12:02

Respostas

  • Sim! Existem várias formas de se fazer isso.

    Possível solução seria você criar uma variável booleana que toda vez que você chamasse um form filho, essa variável receberia o valor true, e quando fechasse o form filho receberia o valor false.

    Outra possibilidade seria você criar uma tabela de controle no banco de dados, com os campos nome do formulário e status. Ao carregar o form principal pela primeira vez, você faria um update nos campos status de todos os forms para fechado. Conforme você for chamando eles, você mudaria seu status para aberto. Portanto no activated, você faria uma consulta do tipo "select * from formsAbetos where status = 'Aberto'" (ou 1 aberto e 0 fechado),  onde se o select não retornasse linhas, você mandaria a foto para frente. Caso contrario, mandaria a foto para o fundo. A consulta ao banco pode deixar o sistema um pouco lento, dependendo do tamanho do sistema.

    Eu já vi uma terceira forma de se fazer isso através de matrizes e vetores, mas nunca tive a oportunidade de parar para estudar como funcionaria.

    Espero ter ajudado.

    sexta-feira, 18 de março de 2011 18:15

Todas as Respostas

  • Bom dia Marco!

    Vamos lá, acho que isso deve resolver seu problema:

    Quando você clicar no menu para abrir o form NovoCliente, adicione esse código:

    picturebox.SendToBack()

     E quando for fechar o form para voltar ao form principal coloque:

    picturebox.BringToFront()

    Acho que isso resolve seu problema. Qualquer coisa poste aí novamente!

    quinta-feira, 17 de março de 2011 11:27
  • Boas,

    É o seguinte coloco uma pictureBox no FrmMain e quando inicio e no formload do formMain coloco picturebox.BringToFront(), e ela aparece e quando abro outro form qualquer, como por exemplo O novoCliente, coloco no novoCliente_load, coloco o picturebox.SendToBack(), mas para fechar os forms utilizo o X do border nas propriedades dos form, onde coloco o send to o picturebox.BringtoFront()?

     

    Cumprimentos a todos!

    sexta-feira, 18 de março de 2011 15:48
  • Olá Marcos!

     

    Você pode colocar no Form_FormClosing ou Form_FormClosed

     

    Isso deve resolver.

    Existe outra forma também, para que você não tenha que colocar o código em todos os forms, que é utilizar o evento ACTIVATION do form principal. Você terá que controlar isso direitinho, pois esse evento é chamado toda vez que o form principal ganhar o foco. Portanto se for utilizar esse caminho, sugiro a você uma variável de controle para que verificar se é realmente para executar o comando.

     

    Caso tenha mais dúvidas, é só postar!

     

    sexta-feira, 18 de março de 2011 16:39
  • Sera que no evento Activated do form principal nao consigo ver se existe algum form aberto ?

    Se existir image.sendtoback

    Senao bringtofront

    Mas como consigo ver se o frmMain contem alguma coisa aberta?

    Cumprimentos a todos!

    sexta-feira, 18 de março de 2011 17:15
  • Sim! Existem várias formas de se fazer isso.

    Possível solução seria você criar uma variável booleana que toda vez que você chamasse um form filho, essa variável receberia o valor true, e quando fechasse o form filho receberia o valor false.

    Outra possibilidade seria você criar uma tabela de controle no banco de dados, com os campos nome do formulário e status. Ao carregar o form principal pela primeira vez, você faria um update nos campos status de todos os forms para fechado. Conforme você for chamando eles, você mudaria seu status para aberto. Portanto no activated, você faria uma consulta do tipo "select * from formsAbetos where status = 'Aberto'" (ou 1 aberto e 0 fechado),  onde se o select não retornasse linhas, você mandaria a foto para frente. Caso contrario, mandaria a foto para o fundo. A consulta ao banco pode deixar o sistema um pouco lento, dependendo do tamanho do sistema.

    Eu já vi uma terceira forma de se fazer isso através de matrizes e vetores, mas nunca tive a oportunidade de parar para estudar como funcionaria.

    Espero ter ajudado.

    sexta-feira, 18 de março de 2011 18:15
  • Olá Marco!

    Porque não usar o .Show() e .ShouwDialog(), sempre funciona.

    att;


    Eder Costa
    LATAM Forum Support Engineer
    Microsoft Corporation
    forumguys
    segunda-feira, 21 de março de 2011 18:08
    Moderador