2010-01-22 4 views
5

J'ai un problème avec l'affichage de notre application Windows .NET sous des paramètres de haute résolution.Problèmes de haute résolution

Tous les formulaires sont définis sur AutoScaleMode = DPI, mais cela ne résout pas tous les problèmes. Fondamentalement, les étiquettes finissent par prendre de l'expansion pour s'adapter à la taille de la police, mais l'emplacement des autres contrôles ne change pas et nous nous retrouvons avec des étiquettes qui obscurcissent d'autres contrôles ou l'un l'autre.

L'écran devrait ressembler à ceci: http://www.manageinvest.com/good.jpg ..et le DPI élevé, il finit par ressembler à ceci: bad.jpg (ce qui est mon premier post donc je ne suis autorisé un lien)

Toutes les suggestions?

Merci à l'avance,

Kristian

Répondre

1

Cela peut ne pas résoudre votre problème.

Mais nous avons appris à la dure que Label et les contrôles de texte doivent être empilés verticalement, c'est-à-dire placer la zone de texte sous l'étiquette, au lieu d'être à côté de l'étiquette. Cela a résolu beaucoup de problèmes pour nous, y compris la prise en charge de plusieurs langues, car la largeur du texte dans différentes langues peut être supérieure au texte anglais

5

En théorie, la mise à l'échelle des polices et DPI dans Winforms est automatique. En pratique ... pas tellement.

J'ai remarqué qu'il s'adapte mieux à la mise à l'échelle verticale qu'à l'horizontale, mais même dans ce cas, il est loin d'être parfait.

Dans mon expérience, mise à l'échelle est fiable lorsque vous effectuez l'une des deux choses:

  1. Ne pas utiliser le concepteur du tout. C'est assez douloureux, mais cela vous donne le contrôle nécessaire sur votre mise en page. Utilisez les contrôles de disposition intégrés - en particulier, les FlowLayoutPanel et TableLayoutPanel. Ces gars sont vos meilleurs amis; Je fais rarement quoi que ce soit dans Winforms sans eux plus.

Dans votre cas, j'irais probablement aveC# 2. Basé sur la capture d'écran, je pense qu'il serait assez facile d'adapter votre mise en page dans une combinaison de TableLayoutPanel et FlowLayoutPanel conteneurs - peut-être même un seul TableLayoutPanel.

2

Vous devriez regarder dans les fonctionnalités AutoScaleMode et AutoSize. Combiné avec les capacités d'accueil, vous devriez être capable de réaliser ce que vous voulez.

J'ai eu un très bon article sur cela, mais le lien est mort ... de toute façon, cela devrait vous aider à démarrer:

http://msdn.microsoft.com/en-us/library/ms229605.aspx

http://www.sellsbrothers.com/writing/winformsAutoScaling.htm

http://msdn.microsoft.com/en-us/library/system.windows.forms.autoscalemode.aspx

Questions connexes