Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
softklin

Ocultar form no arranque do programa

Recommended Posts

softklin

Boas pessoal. Antes de mais peço desculpa pela dúvida básica, mas parece que não encontro uma solução que vá de acordo com as minhas necessidades.

Então é assim: eu tenho um formulário com o qual a aplicação começa, que possui também um NotifyIcon. O que queria era arrancar a aplicação, mostrando apenas o notifyIcon, e a janela ficasse oculta (para o utilizador a poder chamar quando seleccionasse a opção no menu).

Actualmente no meu form_load tenho isto:

        private void frmPlugins_Load(object sender, EventArgs e)
        {
            trayIcon.Icon = Properties.Resources.mmr;
            trayIcon.Visible = true;

            this.WindowState = FormWindowState.Minimized;
            this.Visible = false;
            this.Opacity = 0;
        }

O problema é que o formulário continua a ser mostrado como uma janela activa no Gestor de tarefas, e também é mostrado no ctrl + tab (uma pequena miniatura da janela) (de notar que tenho a opção ShowInTaskabar = false). Alguém me consegue indicar uma maneira limpa de resolver isto?

Cumps.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
merlin3000

experimenta fazer this.hide();

não deves precisar da opacity nem da propriedade visible.


Criar é Divertido

Share this post


Link to post
Share on other sites
softklin

Obrigado merlin, é exactamente isso que preciso! O único problema é que parece que o método load carrega antes de mostrar o form, e ele aparece novamente. Há algum método que corra logo após mostrar o formulário?

Mas é mesmo isso, experimentei aplicar isso a um botão, e já não apareceu no Gestor de tarefas.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
softklin

Encontrei um evento que é executado logo após encontrar o formulário, é o evento "Shown", no qual coloquei o código:

this.Hide();

Juntamente com a propriedade Opacity do form a 0, consegui o efeito desejado, apenas mostrar o NotifyIcon no arranque. É uma técnica um bocado manhosa, mas funciona como pretendo.

Fica também a página do MSDN:

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.shown%28VS.80%29.aspx


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
merlin3000

lol agora fiquei curioso, mas se puseres o

this.WindowState = FormWindowState.Minimized; 

em vez do opacity também deve funcionar.


Criar é Divertido

Share this post


Link to post
Share on other sites
softklin

Se puser a arrancar com a janela minimizada, quando chamar o .Show(), ele aparece-me minimizado, mesmo colocando:

            this.Show();
            this.WindowState = FormWindowState.Normal;

quando quero abri-lo. Colocar antes do this.Show também não funciona. O que é mais estranho, é que se colocar Maximized, ele abre-me realmente a janela maximizada... 🤔 Mas a minha janela tem tamanho fixo e não queria que fosse redimensionada.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
merlin3000

estranho fiz agora um teste com apenas uma form em que a form se esconde por defeito ao iniciar com o minimized e depois no notify icon tenho

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
     this.Show();
     this.WindowState = FormWindowState.Normal;
} 

e funciona. Quando carrego no notify icon este abre a janela.


Criar é Divertido

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.