2010-09-27 2 views
1

Nous avons un utilisateur japonais qui signale qu'une taille de formulaire est tronquée (taille plus petite, tous les contrôles ne sont pas affichés) sur sa machine japonaise. Dans la fenêtre forme .designer.cs fichier, nous avons ces paramètres:Windows Formulaire de taille de formulaire tronqué sur le système d'exploitation japonais

 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 

De plus, sous la forme cteur, nous avons un code qui ressemble à ce que pour ajuster la taille de la forme du DPI. utilisateur japonais a uLa un ensemble régulier de DPI o 96.

 // 
    // Adjust Form Size from DPIRatio 
    // 
    var size = this.Size; 
    // dpiRatio is 1.0 if DPI is 96, 
    // dpiRatio is less than 1.0 if DPI higher than 96 
    var dpiRatio = DPIHelper.DPIRatio; 
    var newSize = new Size((int)(size.Width/dpiRatio), (int)(size.Height/dpiRatio)); 
    this.MaximumSize = newSize; 
    this.MinimumSize = newSize; 
    this.Size = newSize; 

Je suis sûr que cela vient de l'autre jeu de police sur Windows japonais, mais n'a pas trouvé d'indications à suivre pour gérer que sur le web. Une idée?

Répondre

1

C'est le code du deuxième extrait qui gâche tout cela. Les machines d'Asie de l'Est tirent souvent parti d'une fonctionnalité XP qui permet d'augmenter la taille de la police du système sans augmenter le DPI. Nice pour la lisibilité de leurs caractères complexes.

Supprimez simplement le code pour résoudre le problème. Si vous souhaitez rendre le formulaire impossible, définissez FormBorderStyle sur, disons, Fixed3D. Si vous insistez pour truquer la bordure, vous devrez déplacer les affectations Min/MaximumSize vers l'événement Load. Ce n'est qu'alors que la propriété Size du formulaire est calculée et corrigée pour la taille de police du système, ainsi que pour les préférences de l'utilisateur telles que la taille de la bordure ou la taille du texte de la légende. Quel btw est un autre mode de défaillance pour votre code.

+0

Hans, merci pour les commentaires. Ce code DPI est ici pour quelque chose: sans cela, la forme n'est pas bien dimensionnée sur une machine Wnd avec un DPI supérieur à 96. Avez-vous des idées sur la manipulation des machines DPI et japonaises? –

+0

Un PPP supérieur sélectionne également une taille de police système plus importante. Ainsi, AutoScaleMode prend en charge la taille du formulaire, ce qui le rend plus grand. Je ne comprends pas pourquoi tu en as besoin. Assurez-vous que la machine redémarre lorsque vous modifiez le paramètre DPI. –

+0

Hans, en effet ce que vous avez écrit est la théorie, mais en pratique sans ce code DPI cela ne fonctionne tout simplement pas. Nous avons eu des tonnes de problème de compatibilité Wnd sur les hings qui devraient bien fonctionner en théorie http://codebetter.com/blogs/patricksmacchia/archive/2010/04/06/windows-programming-the-quot-it-works-on-my -machine-quot-syndroma.aspx –

Questions connexes