Eu tenho um aplicativo WinForms que estou tentando fazer em tela inteira (algo parecido com o que o VS faz no modo de tela inteira).
Atualmente estou configurando FormBorderStyle
para None
e WindowState
para Maximized
que me dá um pouco mais de espaço, mas não cobre a barra de tarefas se estiver visível.
O que preciso fazer para usar esse espaço também?
Para obter pontos de bônus, há algo que eu possa fazer para que meu MenuStrip
ocultar automaticamente também abra mão desse espaço?
Uma solução testada e simples
Eu estive procurando uma resposta para esta pergunta no SO e em alguns outros sites, mas uma resposta foi muito complexa para mim e outras respostas simplesmente não funcionam corretamente, então, depois de muitos testes de código, resolvi esse quebra-cabeça.
Nota: Estou usando o Windows 8 e minha barra de tarefas não está no modo de ocultação automática.
Descobri que definir o WindowState como Normal antes de realizar qualquer modificação irá parar o erro com a barra de tarefas não coberta.
O código
Criei esta classe que possui dois métodos, o primeiro entra no "modo tela cheia" e o segundo sai do "modo tela cheia". Portanto, você só precisa criar um objeto desta classe e passar o Form que deseja definir para tela inteira como argumento para o método EnterFullScreenMode ou para o método LeaveFullScreenMode:
Exemplo de uso
Eu coloquei essa mesma resposta em outra questão que não tenho certeza se é uma duplicata ou não desta. (Link para a outra pergunta: Como exibir um Windows Form em tela inteira na parte superior da barra de tarefas? )
fonte
targetForm.WindowState = FormWindowState.Normal;
no início para sair da tela inteira também. Isso para lidar com o caso em que o usuário está indo para tela inteira a partir de uma janela maximizada.E para a questão do menu, tente definir
quando no modo de tela inteira, ele deve desaparecer.
E ao sair do modo de tela
menustrip1.parent
inteira , redefina o para a forma novamente e o menu ficará normal novamente.fonte
Você pode usar o código a seguir para ajustar a tela do sistema e a barra de tarefas ficar visível.
Não há necessidade de usar:
Essa linha interfere
alt+tab
na mudança para outro aplicativo. ("TopMost" significa que a janela permanece sobre as outras janelas, a menos que também estejam marcadas como "TopMost".)fonte
Recentemente, criei um aplicativo Mediaplayer e usei chamadas de API para garantir que a barra de tarefas estava oculta quando o programa estava sendo executado em tela cheia e, em seguida, restaurei a barra de tarefas quando o programa não estava em tela cheia ou não tinha foco ou foi encerrado.
fonte
Você precisa definir sua janela para ser superior.
fonte
Não sei se funcionará no .NET 2.0, mas funcionou no .NET 4.5.2. Aqui está o código:
Uso:
fonte
No evento de movimentação do formulário, adicione o seguinte:
fonte
Trabalhei na ideia do Zingd e tornei-a mais simples de usar.
Também adicionei a tecla F11 padrão para alternar o modo de tela inteira.
Configuração
Tudo agora está na classe FullScreen, então você não precisa declarar um monte de variáveis em seu Form. Você acabou de instanciar um objeto FullScreen no construtor do seu formulário:
Observe que isso pressupõe que o formulário não está maximizado quando você cria o objeto FullScreen.
Uso
Basta usar uma das funções da classe para alternar para o modo de tela inteira:
ou se você precisar lidar com isso explicitamente:
Código
fonte