Enregistrez les valeurs dans le fichier user.config.
Vous devrez créer la valeur dans le fichier de configuration - il doit se trouver dans le dossier Propriétés. Créez cinq valeurs :
-
Top
de type double
-
Left
de type double
-
Height
de type double
-
Width
de type double
-
Maximized
de type bool
- pour tenir compte du fait que la fenêtre est maximisée ou non. Si vous voulez stocker plus d'informations, un autre type ou une autre structure sera nécessaire.
Initialiser les deux premiers à 0 et les deux seconds à la taille par défaut de votre application, et le dernier à false.
Créez un gestionnaire d'événement Window_OnSourceInitialized et ajoutez ce qui suit :
this.Top = Properties.Settings.Default.Top;
this.Left = Properties.Settings.Default.Left;
this.Height = Properties.Settings.Default.Height;
this.Width = Properties.Settings.Default.Width;
// Very quick and dirty - but it does the job
if (Properties.Settings.Default.Maximized)
{
WindowState = WindowState.Maximized;
}
NOTE : Le placement de la fenêtre doit se faire dans l'événement initialisé à la source de la fenêtre et non dans le constructeur, sinon si la fenêtre est maximisée sur un deuxième moniteur, elle redémarrera toujours maximisée sur le moniteur principal et vous ne pourrez pas y accéder.
Créez un gestionnaire d'événement Window_Closing et ajoutez ce qui suit :
if (WindowState == WindowState.Maximized)
{
// Use the RestoreBounds as the current values will be 0, 0 and the size of the screen
Properties.Settings.Default.Top = RestoreBounds.Top;
Properties.Settings.Default.Left = RestoreBounds.Left;
Properties.Settings.Default.Height = RestoreBounds.Height;
Properties.Settings.Default.Width = RestoreBounds.Width;
Properties.Settings.Default.Maximized = true;
}
else
{
Properties.Settings.Default.Top = this.Top;
Properties.Settings.Default.Left = this.Left;
Properties.Settings.Default.Height = this.Height;
Properties.Settings.Default.Width = this.Width;
Properties.Settings.Default.Maximized = false;
}
Properties.Settings.Default.Save();
Cette opération échouera si l'utilisateur réduit la zone d'affichage - soit en déconnectant un écran, soit en modifiant la résolution de l'écran - alors que l'application est fermée. Vous devez donc ajouter une vérification que l'emplacement et la taille souhaités sont toujours valides avant d'appliquer les valeurs.
2 votes
Veuillez noter que si vous réorganisez à la fois la taille et l'âge de l'enfant, vous devez vous assurer que l'enfant est en bonne santé. position (comme le font la plupart des exemples de code ci-dessous), vous voudrez gérer le cas limite où quelqu'un a débranché le moniteur sur lequel la fenêtre a été présentée en dernier lieu, afin d'éviter de présenter votre fenêtre hors écran.
0 votes
@OmerRaviv Avez-vous trouvé un exemple prenant en compte le cas limite ?
0 votes
J'ai trop peu de temps pour ajouter un commentaire, c'est pourquoi j'ai créé cette nouvelle alerte. J'utilise la même solution que Lance Cleveland y compris l'établissement de RobJohnson mais cela ne fonctionne pas si vous l'utilisez pour des sous-fenêtres et que vous voulez en ouvrir plusieurs en même temps...