2010-07-07 8 views
1

Nous avons une application WinForms qui inclut des contrôles tels que des cadres d'image positionnés sur un formulaire. L'application de base est en anglais.WinForms Position de contrôle en chinois simplifié

Nous avons traduit cette application à un certain nombre de langues différentes (français, espagnol, danois, grec, etc.) et plus récemment chinois simplifié. L'application traduite fonctionne parfaitement sur nos systèmes d'exploitation (anglais).

Un de nos clients a installé l'application sur leur système d'exploitation, Windows XP en chinois simplifié. La disposition de notre application est cassée. Autrement dit, les éléments sont poussés vers le bas à droite par un facteur proportionnel à la distance entre l'élément et le coin supérieur gauche. Par exemple, un élément dans le coin supérieur droit en mode Création est déplacé vers la droite sur l'écran alors que les éléments situés en bas de la page sont poussés vers le bas et vers la droite.

L'application prend en charge la commutation de langues en cours d'utilisation. Lorsque l'environnement local est en-US, il n'y a aucun problème de mise en page. Lorsque vous passez en chinois simplifié, le problème apparaît, mais uniquement sur le système d'exploitation chinois simplifié. La résolution d'écran et DPI sont les mêmes.

Avez-vous des idées? Je suis sûr que ce doit être un simple paramètre de configuration quelque part, mais j'ai été incapable de résoudre ce problème.

Répondre

1

La taille de la police de base du système est également importante. Ce qui est en effet quelque chose que vous pouvez changer sur XP. Cela appelle la logique de mise à l'échelle automatique du formulaire, conçue pour garantir que les contrôles s'agrandissent pour s'adapter à la taille de la police.

C'est par la conception, contrôlée par la propriété AutoScaleMode du formulaire. Ne le changez pas, le rééchelonnement est important. Assurez-vous simplement que la présentation du formulaire est toujours bonne, utilisez des propriétés telles que Anchor et Dock, des contrôles comme TableLayoutPanel, FlowLayoutPanel. Ou l'événement Resize pour les plus difficiles.

coller dans votre formulaire pour tester cette logique sans avoir à modifier les paramètres du système:

protected override void OnLoad(EventArgs e) { 
     this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 125/96); 
    } 
+0

Je n'ai pas d'autre choix que de concevoir complètement la disposition des éléments pour le rendre auto-redimensionnez la fenêtre même si J'ai une taille de fenêtre fixe? Je suppose que le code que vous collez là devrait être exécuté seulement quand la famille de police par défaut est non-standard? Est-ce que la police a un impact sur les boîtes d'image? J'aurais attendu cela de zones de texte, mais pas d'éléments graphiques. –

+0

Si je comprends bien, la désactivation du mode AutoScaleMode serait une solution de contournement simple qui la rendrait identique partout, mais je perdrais des fonctionnalités lorsque les utilisateurs du logiciel qui ont une basse vision? (problème d'accessibilité?) –

+0

La désactivation n'est pas une option. Le texte à l'intérieur des contrôles sera coupé car le contrôle n'est pas assez grand. Rendre les caractères chinois illisibles. –

Questions connexes