Pourquoi ne pouvez-vous pas lier la Taille
d’un formulaire Windows à ApplicationSettings
?
En tant que développeurs travaillant avec des formulaires Windows, nous cherchons souvent à améliorer l’expérience utilisateur en maintenant les états de l’application. Une question courante qui se pose lors de l’utilisation de ApplicationSettings
avec des formulaires Windows est : Pourquoi ne pouvez-vous pas lier la taille d’un formulaire Windows directement à ApplicationSettings
?
Cette limitation peut être frustrante, en particulier lorsque d’autres propriétés semblent se lier sans effort. Cependant, il existe une manière de résoudre ce problème et de s’assurer que l’état de la fenêtre et la taille de votre application sont sauvegardés entre les sessions. Explorons la racine du problème et examinons la solution plus en détail.
Comprendre la restriction
Lorsque vous essayez de lier la taille d’un formulaire Windows directement à ApplicationSettings
, vous pouvez remarquer que la propriété Size est absente de la liste de Liaison de Propriétés. Cela s’explique par le fait que la taille du formulaire ne peut pas être simplement liée ; elle nécessite souvent plus de contexte en raison de la nécessité de sauvegarder l’état du formulaire lorsqu’il est maximisé ou minimisé.
Pourquoi un traitement explicite est-il nécessaire
- Restaurer l’état : La liaison directe à la taille ne tiendrait pas compte des éventuels changements d’état du formulaire (par exemple, s’il est minimisé ou maximisé).
- Utilisation de propriétés supplémentaires : Lorsque le formulaire n’est pas dans son état normal, la taille doit être récupérée à partir des
RestoreBounds
, qui ne sont pas mis à jour par une liaison simple.
La solution : Implémenter une classe RestorableForm
Pour contourner efficacement cette limitation, nous pouvons créer une sous-classe de Form
– appelons-la RestorableForm
. Cette classe gérera la taille et l’état de la fenêtre de l’application de manière fluide, en implémentant les remplacements et les liaisons nécessaires.
Implémentation étape par étape
-
Héritez de
RestorableForm
au lieu duForm
standard. -
Ajoutez une liaison à WindowRestoreState.
- Cette liaison va capturer et sauvegarder la position et l’état de la fenêtre.
-
Invoke Settings Save à la fermeture de l’application.
- Appelez
Properties.Settings.Default.Save()
lors de la fermeture de la fenêtre pour s’assurer que tous les paramètres sont stockés.
- Appelez
Exemple de code
Voici une implémentation concise de la classe RestorableForm
:
using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;
namespace Utilities
{
public class RestorableForm : Form, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private WindowRestoreStateInfo windowRestoreState;
[Browsable(false)]
[SettingsBindable(true)]
public WindowRestoreStateInfo WindowRestoreState
{
get { return windowRestoreState; }
set
{
windowRestoreState = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("WindowRestoreState"));
}
}
protected override void OnClosing(CancelEventArgs e)
{
WindowRestoreState = new WindowRestoreStateInfo
{
Bounds = WindowState == FormWindowState.Normal ? Bounds : RestoreBounds,
WindowState = WindowState
};
base.OnClosing(e);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (WindowRestoreState != null)
{
Bounds = ConstrainToScreen(WindowRestoreState.Bounds);
WindowState = WindowRestoreState.WindowState;
}
}
private Rectangle ConstrainToScreen(Rectangle bounds)
{
// Logique de contrainte ici...
}
public class WindowRestoreStateInfo
{
public Rectangle Bounds { get; set; }
public FormWindowState WindowState { get; set; }
}
}
}
Points clés dans le code
- Gestion des propriétés : La propriété
WindowRestoreState
capture à la fois la position et l’état. - Chargement et sauvegarde des états : Les méthodes remaniées prennent soin de restaurer la position et de gérer l’état de la fenêtre lors de la fermeture.
- Contraintes d’écran : La méthode
ConstrainToScreen
s’assure que le formulaire s’inscrit dans l’affichage, ce qui est crucial lors de la restauration de sa taille et de sa position.
Références pour un apprentissage supplémentaire
Pour plus d’informations sur les composants utilisés dans la classe RestorableForm
, vous pourriez trouver ces liens utiles :
Conclusion
Lier la Taille
d’un formulaire Windows directement à ApplicationSettings
pose des défis, mais avec la classe RestorableForm
, vous pouvez vous assurer que votre application se souvienne de son état entre les sessions. En mettant en œuvre une gestion d’état explicite, vous permettez aux utilisateurs d’avoir une expérience plus cohérente et personnalisée lors de l’utilisation de votre application.
Avec cette approche, vous pouvez gérer efficacement la taille et l’état de vos formulaires Windows et créer des applications conviviales qui semblent réactives et intuitives.