J'ai une ancienne application WinForms et je souhaite enregistrer la position et la taille de la fenêtre entre les sessions. J'ai utilisé GetWindowPlacement et SetWindowPlacement pendant les événements FormClosing et Load. Le problème que je reçois est que, à des réglages DPI plus élevés (tels que Medium, taille à 125%), les tailles continuent de gonfler. J'appellerai SetWindowPlacement dessus avec une certaine taille, mais quand GetWindowPlacement est appelé, ces nombres reviennent 25% plus grands, même si la fenêtre était toujours de la même taille. Le même type de problème existe lors de l'enregistrement de la taille d'un élément redimensionnable dans le formulaire.GetWindowPlacement/SetWindowPlacement ne fonctionne pas dans WinForms pour un taux de résolution élevé
Maintenant, cela fonctionne très bien si je crée un nouveau projet WinForms: La taille reste stable même lors de l'exécution au DPI supérieur. J'imagine qu'il y a un certain héritage dans les entrailles du projet ou un paramètre de Formule mystérieux qui le gâche, mais je ne peux pas savoir où.
J'ai appelé IsProcessDPIAware sur les deux projets et les deux sont true
. Est-ce que quelqu'un sait ce qui pourrait causer cela?
+1 pour l'indice sur AutoScaleMode. – RandomEngy