Pergunta

Eu quero impedir que o usuário maximizar o formulário do Windows para tela cheia, então eu ter desativado o botão Maximizar. No entanto, eu quero ser capaz de ter o usuário 'restaurar' o formulário. Quando eles clique no botão Restaurar eu quero isso para mostrar uma forma diferente, menor, minified, formulário, que irá mostrar-lhes um botão de maximizar que retornará o uso da forma original.

Existe uma maneira de fazer isso?

Graças.

edit: Você não entende, eu não estou impedindo que o usuário redimensionar o formulário. O que está acontecendo é quando o clique no botão restaurar, ele vai esconder o formulário e abra um novo com menos controles sobre ele. Quando eles clique em Maximizar no formulário menor, ele irá retornar à forma original.

Foi útil?

Solução

Eu olhei para um problema semelhante a este no trabalho e as únicas soluções que eu poderia encontrar estilos de janela indocumentados configuração envolvidos, o que eu não estava inclinado a fazer.

Portanto, a melhor solução para o seu problema eu acho que seria para esconder a corrente minimizar / maximizar / restaurar botões e adicione seu próprio usando alguns comandos OwnerDraw ou outros.

Olhando para este a partir de uma perspectiva de interação com o usuário que eu iria querer os botões de minimizar / maximizar / restaurar a fazer exatamente a mesma coisa para sua aplicação como fazem para todos os outros. Substituindo essa funcionalidade iria criar confusão para os usuários, portanto, por isso que eu recomendo a criação de botões diferentes, quer na barra de título ou em outro lugar no seu interface que executar esta função.

Outras dicas

FWIW, a resposta certa é tornar a sua forma de redimensionamento corretamente, se adaptar a qualquer tamanho da janela e para não constranger o usuário ao que parece certo no o exposição no o resolução e o tamanho da fonte. janelas não-redimensionáveis ??são uma das coisas mais irritantes que eu encontro em um aplicativo (o próprio Windows está cheia deles).

Você pode definir o MaximumSize e MinimumSize e ativar o botão de maximizar para obter este tipo de efeito.

Eu tinha uma situação semelhante recentemente, e a partir de uma perspectiva de design de interface do usuário, encontrou um bom exemplo no Windows Media Player. Ele deixa o minimizar, maximizar e botões Restaurar como elas são, e tem um botão separado no canto inferior direito para "Alternar para o modo Compact". E no mini / modo compacto, o mesmo botão alterna para "mudar para o modo Full". Outro exemplo alternativo é o Skype, que tem um botão adicional ícone do sistema acabado de sair do padrão botão de minimização, que alterna entre os modos compactos e Standard.

(Se eu tive o privilégio, eu teria preferido para colocar isso como um comentário para adicionar a resposta aceita de Daemin, ainda relativamente novo para StackOverflow)

'Restaurar' uma forma aciona o evento Resize onde você pode verificar se o formulário pai não é mais FormWindowState.Maximized. Se não, você pode abrir o formulário filho e ocultar o pai.

Para inverter esta situação, você pode 'maximizar' a forma infantil por esconder (ou descartar) que, em seguida, un-esconde e definir o formulário pai para FormWindowState.Maximized.

O único problema que eu posso ver com este método é que o evento Resize provavelmente irá disparar várias vezes antes que a forma atinge um estado Maximumized. Uma bandeira pode ser necessária para ignorar estes até que a forma passa a partir do estado actual para o estado desejado, o que pode causar um ciclo infinito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top