2009-07-23 6 views
1

Possible en double:
C# OpenFileDialog Non-Modal possiblede dialogue Ouvrir un fichier .NET

Je travaille sur un projet C# Windows Form. Pendant qu'une boîte de dialogue de fichier ouvert est en place, je ne suis pas en mesure de sélectionner quelque chose autour de lui dans l'interface graphique. Est-il possible d'avoir la boîte de dialogue openfile ouverte et toujours être en mesure de sélectionner d'autres contrôles sur l'interface utilisateur principale?

+5

Exact dupliquer de cette question: http://stackoverflow.com/questions/478476/c-openfiledialog-non-modal-possible –

+0

J'ai été en mesure de trouver une réponse sûre et acceptable sur la question que celui-ci pointe à. J'espère que cela fonctionnera pour ce dont vous avez besoin. – Joshua

Répondre

0

dban,

La classe OpenFileDialog ne supporte pas la méthode Show qui ouvrira ses portes une forme dans un état modales, qui est, ne pas cadenasser le parent. Pour autant que je sache, la seule façon d'ouvrir la boîte de dialogue est la suivante: modale. La méthode ShowDialog ouvre les formulaires en modal.

OpenFileDialog dlg = nouveau OpenFileDialog(); dlg.ShowDialog();

Vous pouvez écrire votre propre classe de dialogue de fichier ouvert si vous voulez qu'elle soit ouverte de manière non modale.

Mais vous devriez également considérer si c'est vraiment nécessaire ou non. Généralement, lorsqu'un utilisateur ouvre un dialogue d'ouverture de fichier, c'est parce que l'application a besoin d'un fichier. Il n'y a rien d'autre que l'utilisateur devrait faire avec l'application en attendant.

2

Il n'existe aucun moyen de le faire avec OpenFileDialog standard. Vous devez créer le vôtre, en utilisant un formulaire au lieu d'un FileDialog en tant que classe de base. Cela vous permettrait de concevoir votre propre version non modale.

Cela étant dit, je recommanderais contre cela. Les boîtes de dialogue de fichiers, sous Windows, sont modales par défaut. Les gens s'attendent à ce comportement de votre application - donc le changer ne mènera qu'à la confusion et aux problèmes. Cela tend à rendre votre application moins utilisable et plus compliquée pour les utilisateurs finaux, même si cela semble souvent une bonne idée.

1

Les boîtes de dialogue communes sont des boîtes de dialogue modales qui, par définition, n'autorisent aucune interaction avec une autre fenêtre du processus lorsqu'elles sont actives. Donc, la réponse à votre question est non, il n'y a aucun moyen de le faire. Vous devrez lancer votre propre dialogue en utilisant des contrôles tiers ou auto-créés pour interagir avec le système de fichiers - pas une tâche triviale.