Mostrando o botão Restaurar sem botão Maximizar
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.
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.