Sauvegarder et de Restaurer la Forme de la Position et de la Taille
Dans un WinForms 2.0 application en C#, ce qui est typique de la méthode utilisée pour la sauvegarde et la restauration de la forme de la position et de la taille dans une application?
Liées, est-il possible d'ajouter un nouvel Utilisateur étendue de paramètres de l'application AU moment de l'EXÉCUTION? Je suis totalement voir comment ajouter des paramètres au moment de la conception, ce n'est pas un problème. Mais si je veux en créer un lors de l'exécution?
Plus de détails:
Ma demande est une conversion d'une application Visual FoxPro. J'ai essayé de lire autant que je peux sur les paramètres de l'application, les paramètres de l'utilisateur, etc. et je me claire sur l' .Net façon de faire les choses, mais il y a encore plusieurs choses que je suis confus sur.
De la Fox application, les paramètres enregistrés sont stockés dans le registre. Mes formes sont sous-classé, et j'ai de la classe de base de code qui enregistre automatiquement le formulaire de position et taille dans le registre à la clé sur le nom du formulaire. Chaque fois que je créer un nouveau formulaire, je n'ai pas à faire quelque chose de spécial pour obtenir ce comportement; elle est intégrée dans la classe de base. Mon .Net formulaires sont également sous-classé, cette partie fonctionne bien.
Dans .Net, j'ai l'impression que je suis censé utiliser de l'Utilisateur étendue de paramètres pour des choses comme les préférences de l'utilisateur. La taille et l'emplacement d'un formulaire certainement sembler comme une préférence de l'utilisateur. Mais, je ne vois aucun moyen d'ajouter automatiquement ces paramètres pour le projet. En d'autres termes, chaque fois que j'ajoute une nouvelle forme de mon projet (et leur sont 100 de formes), je dois rappeler pour AJOUTER un Utilisateur dont l'étendue paramètre d'application et assurez-vous de lui donner le même nom que la forme, c'est à dire, "FormMySpecialSizePosition" pour contenir la taille et la position. Je préfère ne pas avoir à vous rappeler de le faire. Est-ce juste pas de chance? Ou suis-je totalement fausse route en essayant d'utiliser de l'Utilisateur étendue de paramètres? Dois-je créer mon propre fichier XML pour contenir les paramètres, de sorte que je peux faire ce que je veux (j'.e, ajouter un nouveau paramètre au moment de l'exécution)? Ou quelque chose d'autre?
Sûrement, c'est un très commun et quelqu'un peut dire à la "bonne" façon de faire. Merci à l'avance!
- Vous pouvez trouver une question que j'ai demandé il y a un moment utile. Il a une partie solution complète pour un formulaire de base, vous pouvez hériter de faire un formulaire de conserver ses limites et l'emplacement. Vous seriez probablement juste besoin de faire de stocker ses paramètres dans un fichier xml ou quelque chose comme ça.
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce code à partir de quelque part, mais malheureusement, à l'époque (il y a longtemps) je ne voulais pas faire un commentaire à propos de là où je l'ai eu à partir.
Cela permet d'économiser le formulaire d'info à l'utilisateur de registre HKCU:
Il y a effectivement un manque réel d'un seul, "fonctionne" solution à ce n'importe où sur l'internet, alors voici ma création:
Cette application stocke la position et la taille d'un formulaire dans HKCU/Software/<CompanyId()>/<AppId()>/État de la Fenêtre de/<form name>. Il ne sera pas restaurer les paramètres si le moniteur changements de configuration, comme pour empêcher les fenêtres d'être restauré hors de l'écran.
Évidemment, cela ne peut pas gérer plusieurs instances de la même forme. J'ai aussi spécifiquement désactivé la restauration minimisé, mais c'est une solution facile de la source.
Ci-dessus est conçu pour être tombé dans son propre .cs fichier et n'a jamais touché à nouveau. Vous devez instancier un espace de noms local de la copie comme ceci (dans le Programme.cs ou votre plugin principal .cs fichier ou où):
Vous avez maintenant un non-résumé de l'instanciation de l'espace principal. Donc, pour l'utiliser, ajoutez à cela les formes que vous souhaitez sauvé et restauré:
Évidemment hésitez pas à personnaliser à vos propres fins. Aucune garantie n'est exprimée ou implicite. Utilisez à vos risques et périls - je déclinons toute le droit d'auteur.
Niall
Vous pouvez créer un formulaire de base de la classe avec des fonctionnalités communes comme se souvenir de la position et de la taille et héritent de cette classe de base.
Bien, quelque chose comme ça 😉
Je suis dans le même bateau que vous, en qui j'ai un certain nombre de formes (MDI enfants, dans mon cas) que je tiens à préserver la position et la taille de chaque utilisateur. D'après mes recherches, la création de paramètres de l'application lors de l'exécution n'est pas pris en charge. (voir cette entrée de blog)
Cependant, vous n'avez pas à coller le tout dans le principal fichier de paramètres. Vous pouvez ajouter un fichier de Settings de votre projet (expliqué ici dans le MSDN) et l'utiliser via les Propriétés.Les paramètres de l'objet. Ce ne sera pas soulager la douleur d'avoir à se souvenir de créer de nouveaux paramètres globaux pour chaque forme, mais au moins cela permettra de les garder, et ne pas encombrer vos principaux paramètres de l'application.
Aussi loin que l'utilisation de la classe de base pour récupérer les paramètres... je ne sais pas si vous pouvez le faire là. Ce que je voudrais (et probablement) n'est le nom de chaque attribut , puis utilisez Moi.GetType().ToString() (je travaille en VB) pour composer les noms des attributs, je veux récupérer dans le Load() de chaque forme.
Voici quelques liens utiles à consulter:
Enregistrement d'une Forme de la Taille et de l'Emplacement à l'aide de l'Application Paramètres de la fonction
Tout bon des exemples d'utilisation des paramètres des Applications
Explorer les Secrets de la persistance des Paramètres de l'Application
Voici le code que j'ai utilisé.
J'ai aussi présenté ce code dans mon article La sauvegarde et la Restauration d'un Formulaire Position de la Fenêtre.
Je viens de le diffuser à une distincte
XML
de fichiers rapide et sale, et probablement pas ce que vous êtes après:et