Réglage de la position de départ pour OpenFileDialog/SaveFileDialog
Pour tout dialogue personnalisée () sous la forme d'une application WinForm je peux définir sa taille et sa position avant que je l'affiche avec:
form.StartPosition = FormStartPosition.Manual;
form.DesktopBounds = MyWindowPosition;
Ceci est particulièrement important lorsque vous traitez avec plusieurs moniteurs. Sans ce code, lorsque vous ouvrez une boîte de dialogue à partir d'une application que vous avez traîné à un deuxième écran, la boîte de dialogue s'affiche sur le moniteur principal. Ce qui présente une mauvaise expérience utilisateur.
Je me demande s'il y a des crochets pour fixer la position de l'étalon .NET OpenFileDialog et SaveFileDialog (qui n'ont pas de propriété StartPosition).
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que le meilleur que vous pouvez faire est de vous assurer que vous utilisez la la surcharge de
ShowDialog
qui accepte unIWin32Window
à utiliser en tant que parent. Cette pourrait l'aider à choisir un emplacement approprié; le plus souvent:Découvrez cet article sur CodeProject. Extrait:
J'ai eu ce problème pour la plupart d'hier. BobB la réponse a été celle qui m'a aidé le plus (Merci BobB).
Vous pouvez même aller aussi loin que de faire une méthode privée qui crée une fenêtre et ferme avant de la
dialog.ShowDialog()
appel de la méthode et il sera toujours le centre de laOpenFileDialog
.Ensuite l'appeler à n'importe quelle méthode avant le
ShowDialog()
méthode.OpenFileDialog et SaveFileDialog positionner dans le coin supérieur gauche de
la zone client de la dernière fenêtre qui s'affiche. Donc, il suffit de créer un nouveau invisible fenêtre placée à l'endroit où vous souhaitez que la boîte de dialogue apparaisse avant de créer et de montrer que la boîte de dialogue.
DllImport
s.Voici comment je l'ai fait:
Le point où je veux afficher les OpenFileDialog:
Le repositionnement de code:
Je démarre un thread qui ressemble à une fenêtre avec la fonction "Ouvrir" du titre. (Trouve généralement dans les 3 itérations ou de 15 millisecondes.) Puis-je définir la position de la poignée. (Voir SetWindowPos de la documentation pour la position/taille de paramètres).
Encombrants.
Il est tout à fait un vieil exemple d'une approche sur MSDN.
http://msdn.microsoft.com/en-us/library/ms996463.aspx
Il comprend tout le code nécessaire pour mettre en œuvre votre propre OpenFileDialog classe qui permet l'extensibilité.
Très reconnaissants pour BobB de répondre sur ce point. Il y a un peu plus de "problèmes". Vous devez passer la poignée de PositionForm lors de l'appel de OpenFileDialog1.ShowDialog(PositionForm) sinon BobB la technique n'est pas fiable dans tous les cas. Aussi, maintenant que W8.1 lance un nouveau fileopen de contrôle avec SkyDrive, le dossier Documents de l'emplacement dans le W8.1 fileopen de contrôle est maintenant vissé. J'ai donc le frigo fileopen à utiliser l'ancien W7 contrôle par la mise en ShowHelp = True.
Ici est la VB.NET code que j'ai fini par utiliser, ma contribution à la communauté dans le cas où il aide.