Question

J'ai un projet Winform qui répertorie tous les fichiers dans un dossier spécifié. Il permet à l'utilisateur de sélectionner une nouvelle destination pour chaque fichier, et lorsque l'utilisateur a choisi les destinations pour tous les fichiers qu'il souhaite déplacer, il déplace les fichiers, un par un.

Ma prochaine étape est, je dois afficher un formulaire de confirmation lorsque les fichiers sont déplacés, et ajouter le nom et la destination de chaque fichier à la forme de confirmation qu'il est déplacé.

Ma question est: Comment puis-je ajouter du texte à des contrôles de formulaire de confirmation après avoir déjà chargé (à l'aide confirm.showdialog() de mon autre forme, sans aucune intervention de l'utilisateur? Je suppose que je dois le faire à partir de la forme originale, car il a besoin d'afficher chacun lorsque il commence à se déplacer ce fichier, mais je suis ouvert à toute suggestion:)

TIA

Était-ce utile?

La solution

Les deux réponses ci-dessus sont bonnes.

Si je comprends bien, votre formulaire principal permettent de sélectionner plusieurs fichiers, puis sélectionnez leur destination et de lancer le processus de déplacement. Si c'est ce que vous avez besoin, je voudrais simplement faire ce qui suit:

  1. Créer une nouvelle forme qui rendrait compte du processus à l'utilisateur, sans nécessiter d'interaction, mais juste pour informer l'utilisateur que le fichier est déplacé;
  2. Créer une instance d'un objet BackgroundWorker et appeler la méthode fichier passage de la méthode BackgroundWorker.DoWork () (dans votre principale forme);
  3. Flag votre BackgroundWorker faire état de progrès, puis appeler le gestionnaire d'événements BackgroundWorker.ReportProgress () à partir de votre méthode move fichier;
  4. Utilisez la liste créée précédemment des noms de fichiers pour obtenir son nom et le signaler à votre fichier sous forme de dialogue se déplacer alors que le fichier est en cours de modification. Un DataBinding simple sur une étiquette devrait faire l'affaire pendant que vous vous déplacez votre CurrencyManager à l'élément suivant dans la liste, ou vous pouvez utiliser la liste plus simple indexeur pour obtenir le nom de fichier à un index particulier;
  5. Lorsque l'utilisateur lance le processus de déplacement, obtenir vos noms de fichiers et les compter, puis définissez votre ProgressBar Valeur maximale du nombre de fichiers que vous avez.
  6. La méthode BackgroundWorker.ReportProgress () prend une valeur entière comme argument, puis, avec votre gestionnaire d'événements ProgressChanged (), vous serez en mesure d'afficher le nom du fichier en cours de copie à votre fenêtre en obtenant le nom du fichier à la emplacement de l'index, l'indice donné par votre méthode ReportProgress ().

Cela vous permettra d'utiliser les performances d'un fil supplémentaire, sans « geler » votre fil principal à partir duquel votre formulaire a été créé, vous serez en mesure d'effectuer simultanément votre déménagement de fichiers et d'afficher le nom du fichier au progrès -forme, tout en illustrant à votre utilisateur visuellement ce que le progrès est sur le point par votre contrôle ProgressBar, et d'afficher le nom du fichier tel que requis.

Est-ce que cette aide?

Autres conseils

Ne serait-il pas plus simple de faire une autre forme au lieu d'utiliser des boîtes de dialogue prédéfinies?

cette façon, vous pouvez juste avoir une zone de texte que vous enrichissez et rafraîchir

Vous pouvez ne pas mettre tout le code pour montrer le déplacement des fichiers dans la fenêtre de dialogue de confirmation.

Mais pour donner une solution plus complète pourriez-vous me dire comment vous recueillez le fichier d'informations en mouvement.

Une bonne solution serait de passer juste dans la liste des fichiers à déplacer, puis exécuter la fonction mobile dans la boîte de dialogue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top