vb.net добавить текст в форму без взаимодействия

StackOverflow https://stackoverflow.com/questions/2441091

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть проект winform, в котором перечислены все файлы в указанной папке.Он позволяет пользователю выбирать новое место назначения для каждого файла, и когда пользователь выбрал места назначения для всех файлов, которые он хотел бы переместить, он перемещает файлы один за другим.

Мой следующий шаг: мне нужно отобразить форму подтверждения при перемещении файлов и добавить имя и место назначения каждого файла в форму подтверждения по мере его перемещения.

Мой вопрос:Как добавить дополнительный текст в элементы управления формы подтверждения после того, как я уже загрузил ее (используя confirm.showdialog() из моей другой формы, без какого-либо взаимодействия с пользователем?Я предполагаю, что мне нужно сделать это из исходной формы, потому что нужно отображать каждый из них, когда он начинает перемещать этот файл, но я открыт для любых предложений:)

ТИА

Это было полезно?

Решение

Оба приведенных выше ответа хороши.

Если я правильно понимаю, ваша основная форма позволит выбрать несколько файлов, затем выбрать их место назначения и запустить процесс перемещения.Если это то, что вам нужно, я бы просто сделал следующее:

  1. Создайте новую форму, которая сообщала бы пользователю о процессе, не требуя какого-либо взаимодействия, а просто информировала бы пользователя, какой файл перемещается;
  2. Создайте экземпляр объекта BackgroundWorker и вызовите метод перемещения файла из метода BackgroundWorker.DoWork() (в основной форме);
  3. Отметьте свой BackgroundWorker, чтобы он сообщал о ходе выполнения, затем вызовите обработчик событий BackgroundWorker.ReportProgress() из вашего метода перемещения файла;
  4. Используйте ранее созданный список имен файлов, чтобы получить его имя и сообщить его в диалоговую форму перемещения файла во время изменения файла.Простая привязка данных по метке должна помочь, пока вы перемещаете CurrencyManager к следующему элементу в списке, или вы можете проще использовать индексатор списка, чтобы получить имя файла по определенному индексу;
  5. Когда пользователь запускает процесс перемещения, получите имена ваших файлов и посчитайте их, затем установите максимальное значение ProgressBar на количество имеющихся у вас файлов.
  6. Метод BackgroundWorker.ReportProgress() принимает целочисленное значение в качестве аргумента, затем с помощью обработчика событий ProgressChanged() вы сможете отобразить имя файла, копируемого в ваше окно, получив имя файла в индексном месте, индекс, заданный вашим методом ReportProgress().

Это позволит вам использовать производительность дополнительного потока, не «замораживая» основной поток, из которого была создана ваша форма, тогда вы сможете одновременно выполнять перемещение файла и отображать имя файла в прогресс-форме, визуально иллюстрируя пользователю прогресс с помощью элемента управления ProgressBar и отображая имя файла по мере необходимости.

Это помогает?

Другие советы

Не проще ли было бы создать другую форму вместо использования готовых диалогов?

таким образом вы можете просто иметь текстовое поле, которое вы заполняете и обновляете

Вы можете поместить весь код, чтобы показать перемещение файлов внутри диалогового окна подтверждения.

Но чтобы дать более полное решение, не могли бы вы рассказать мне, как вы собираете информацию о перемещении файлов.

Хорошим решением было бы просто передать список файлов, которые нужно переместить, а затем выполнить функцию перемещения в диалоговом окне.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top