2009-09-28 7 views
2

Je veux configurer mon WinForm pour ressembler à l'IDE Delphi7. Fondamentalement, cela signifie que la fenêtre n'a pas d'arrière-plan (le bureau apparaît à travers), et les fenêtres enfants flottent autour.WinForms fenêtres flottantes (comme Delphi7 IDE)

Voici un exemple d'image: alt text http://www.builder.cz/images/delphi7-screenshot-big.png

Je peux gérer les fenêtres flottantes, mais comment pourrais-je aller pour la fenêtre principale (la barre de menu et la barre d'outils)? Quelles sont les propriétés WinForm requises pour obtenir cette mise en page? Je n'arrive pas à me débarrasser de la zone client de la fenêtre.

Merci

Répondre

6

Pourquoi ne pouvez-vous vous débarrasser de la zone client? Redimensionnez simplement le formulaire principal pour qu'il soit aussi fin que possible.

Vous pouvez implémenter les fenêtres flottantes en tant que UserControls dans la collection Controls du formulaire principal. Si oui, il y a deux façons de gérer cela:

  1. Implémentez les fenêtres flottantes comme fenêtres réelles. Montrez-leur en utilisant "frmToolWindows.Show (this);" (Cela les gardera toujours au-dessus de votre formulaire principal).
  2. Si vous devez conserver les flottants en tant que UserControls, vous pouvez rendre la zone client de votre formulaire principal transparente en définissant la propriété TransparencyKey du formulaire sur une couleur arbitraire (Color.Red, par exemple) puis en définissant la propriété BackColor du formulaire sur la même couleur. Cela rendra votre formulaire transparent et capable d'être cliqué.
+1

Merci. Se débarrasser de la zone client en redimensionnant la forme principale est en effet la façon de le faire, cependant, qui vient avec quelques autres détails. Lorsque vous redimensionnez la fenêtre, vous pouvez à nouveau exposer la zone cliente et lorsque vous agrandissez la fenêtre, elle occupera tout l'écran et la zone cliente masquera le bureau. La solution aux deux problèmes ci-dessus consiste à gérer les messages WM_SIZING et WM_GETMINMAXINFO et à limiter la hauteur selon les besoins. En ce qui concerne les fenêtres flottantes, je déteste la deuxième option car elle ajoute une charge inutile. Votre première option est bonne. Merci de votre aide. –

+0

Vous ne voulez pas nécessairement les autres fenêtres toujours au-dessus de la fenêtre principale. Cela peut être difficile d'accéder à la barre d'outils de la fenêtre principale. –

-4

Veuillez ne pas créer d'interface utilisateur comme celle-ci. C'est très non-standard, et ne gagne rien dans le domaine de l'utilisabilité. Vous pouvez simplifier les choses en conservant le tout dans une fenêtre comme Visual Studio.

+0

Les votes négatifs sont parce que la question n'était pas "Devrais-je faire mon interface utilisateur comme ça?" En outre, je préfère ce style d'IDE (de mes jours Visual Basic) sur mon ordinateur portable, car la mise en page Visual Studio actuelle nécessite un grand moniteur pour être le plus efficace. – MusiGenesis

+0

Je peux gérer un vote négatif, si cela augmente la convivialité globale du logiciel. –

+4

@John: Malheureusement, cela n'augmente pas la facilité d'utilisation du logiciel pour tout confiner à la zone client de la fenêtre principale unique. Demandez à n'importe quel utilisateur avec plusieurs moniteurs comment ils se sentent à ce sujet. Et les utilisateurs Visual Studio souhaitaient en effet un meilleur support multi-moniteur, depuis des années. – mghie