vb.net добавить текст в форму без взаимодействия - PullRequest
0 голосов
/ 14 марта 2010

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

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

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

ТИА

Ответы [ 3 ]

1 голос
/ 14 марта 2010

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

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

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

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

Помогает ли это?

0 голосов
/ 14 марта 2010

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

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

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

0 голосов
/ 14 марта 2010

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

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

...