2 votes

Application Wpf -- Comment sauvegarder et charger l'écran sur lequel se trouve l'application ?

J'ai consulté Stack overflow et j'ai vu quelques messages qui presque résoudre ce problème, mais pas vraiment. Pour être plus précis, je me réfère à une application qui est déployée auprès d'utilisateurs qui peuvent avoir 3 ou 4 écrans et l'application voudrait se souvenir de celui sur lequel elle doit aller au démarrage.

J'ai une application WPF et je veux sauvegarder l'écran sur lequel elle était lorsque le formulaire fait son OnClose. Ensuite, lors du chargement, je veux placer mon application sur cet écran.

Comment faire (sans faire appel à l'API Win32) ?

EDIT : Dans un post précédent de StackO, quelqu'un a mentionné de faire quelque chose comme :

var screen = System.Windows.Forms.Screen.FromRectangle(
  new System.Drawing.Rectangle(
    (int)myWindow.Left, (int)myWindow.Top, 
    (int)myWindow.Width, (int)myWindow.Height));

Une fois que j'ai screen il semble que la seule chose que je puisse faire est de vérifier si l'application est sur l'écran principal ou non. Ce qui est bien... si mes utilisateurs n'ont que deux écrans, mais pas bien s'ils en ont plus de 3. Est-ce qu'il y a quelque chose de mieux que je peux faire avec ce résultat ? screen que de vérifier s'il s'agit d'un objet primaire.

2voto

Anton Points 3371

Vous pouvez obtenir plus d'informations sur les moniteurs multiples en consultant la propriété Screen.AllScreens.

http://msdn.microsoft.com/en-us/library/system.Windows.forms.screen.allscreens.aspx

De mémoire, je pense que si vous sauvegardez les positions gauche et supérieure de votre fenêtre et que vous les restaurez lorsque vous chargez votre application, cela fonctionne avec plusieurs moniteurs.

1voto

CodeWarrior Points 3541

Je l'ai fait précédemment avec une classe ViewManager, un fichier de configuration XML personnalisé et MVVM. Essentiellement, lorsque OnClose est appelé, la classe ViewManager (une classe personnalisée qui contient simplement une collection d'instances ViewInfo également personnalisées) est interrogée pour savoir quelles vues sont actuellement ouvertes et dans quel ordre (car elles peuvent être parcourues en utilisant Ctrl+Tab) et quel est l'ID de l'enregistrement affiché ; cette application utilisait Entity Framework pour accéder aux données de la base de données, chaque vue de l'application correspondant soit à une collection d'enregistrements, soit à un enregistrement unique d'un type spécifique.

Quoi qu'il en soit, la sortie XML contiendrait le nom de la vue, l'application (il y avait plusieurs parties de l'application que j'appelais applications en interne) à laquelle elle appartenait, des informations sur l'enregistrement qui avait été chargé, etc.

Lors du chargement du programme, la seule vue qui est automatiquement chargée est la vue d'accueil qui contient potentiellement toutes les autres vues. ViewManager vérifie le fichier XML et charge les vues en fonction de son contenu. Cette action peut être désactivée dans l'écran des options afin que les utilisateurs se voient présenter un espace de travail propre lorsqu'ils entrent dans l'application, s'ils le souhaitent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X